2016-06-13 26 views
0

之間的直方圖距離這裏以下this question續集多個表

背景我有2個數據庫:事件(400K行整個年)和汽車(6萬行每月)。較小的樣本是here看起來像這樣input db 事件具有位置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看起來像這樣results

回答

0

我想我找到了答案。以下工作:

--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;