多个表
问题描述:
之间的直方图距离这里以下this question续集多个表
背景我有2个数据库:事件(400K行整个年)和汽车(6万行每月)。较小的样本是here看起来像这样 事件具有位置x y。汽车具有car_id,time_now,time_prev,time_next以及位置x y。
预期结果应该是在事件发生时间±德尔塔时间时从每个事件到所有汽车的距离的直方图。 或者,对于每个事件,在事件发生时±δ的情况下,每辆车都有距离表。如果没有任何工作,可能会添加到表事件列closest_car_0min,closest_car_5min,closest_car_15min,closest_car_30min。
我想用ST_Distance
来计算距离(PostGIS扩展)。
我也创建了time_prev和time_next,因为我想检查事件events.date_±1小时的时间是否落在从time_prev到time_now或从time_now到time_next的时间间隔内。
问题:好吧,我该怎么做?
更新澄清,我加入想要的结果here看起来像这样
答
我想我找到了答案。以下工作:
--create empty table for results and fix key
create table results
(
resultID serial NOT NULL,
vehicle_id numeric(10,0),
eventid numeric(10,0),
deltaMIN interval MINUTE,
distance_m32138 double precision,
eventtime timestamp without time zone,
time_now timestamp without time zone,
time_prev timestamp without time zone,
time_next timestamp without time zone
)
;
alter table results add CONSTRAINT results_pkey PRIMARY KEY (resultID);
INSERT INTO results
(vehicle_id, eventid, deltaMIN, distance_m32138, eventtime, time_now, time_prev,time_next)
select
vehicle_id,
eventid,
deltaMIN,
ST_Distance (
ST_Transform(toy_events.geom ,32138),
ST_Transform(toy_cars.geom ,32138)
) AS distance_m32138,
eventtime, time_now, time_prev, time_next
from
toy_events,
toy_cars,
deltas
where
eventtime between time_prev and time_next
or
(
eventtime - deltamin between time_prev and time_now
or
eventtime + deltamin between time_now and time_next
)
;
select * from results;