Step1:統(tǒng)計
輸入:時間范圍蛀缝,空間范圍
輸出:(geohash,時間序列), count,row,col(以0為開頭)
Step2:生成完整時間序列的網(wǎng)格
輸入:時間范圍陕见,空間范圍
輸出:生成完整時間序列的網(wǎng)格
Step1
1.時間范圍和空間范圍的定義
{
? ? "time_extend": {
? ? ? ? "end_time": "2012123123",
? ? ? ? "timestep": "1",
? ? ? ? "start_time": "2012010100"
? ? },
? ? "space_extend": {
? ? ? ? "east": 121.382326,
? ? ? ? "west": 119.914598,
? ? ? ? "north": 32.036541,
? ? ? ? "south": 30.760336
? ? }
}
2.獲得數(shù)據(jù)
已知數(shù)據(jù)庫中的時間
已知 數(shù)據(jù)庫中的地址
a. 篩選時間 ——數(shù)據(jù)
b.數(shù)據(jù)點落在 空間范圍內
ST_MakeEnvelope—從最小和最大坐標創(chuàng)建一個矩形Polygon。
ST_Covers—如果幾何B中的任何點都不在幾何A之外湃番,則返回1(TRUE)
select glib.f_quadtree2rowcol('trstrt'); 獲得結果{行號婆誓,列號}
select crimestat.datacluster('{
? ? ? ? "end_time": 2012123123,
? ? ? ? "timestep": "1",
? ? ? ? "start_time": 2012010100
? ? }'::json, '{
? ? ? ? "east": 121.382326,
? ? ? ? "west": 119.914598,
? ? ? ? "north": 32.036541,
? ? ? ? "south": 30.760336
? ? }'::json,14);
查詢
trstrtrqrsrqqr
Step2:生成完整時間序列的網(wǎng)格
1. 空白生成
行:0~x
列:0~y
時間:范圍中的每小時
排列組合——
2. 新表若相等***
集合返回函數(shù)_?generate_series
交叉連接
交叉連接(CROSS JOIN)把第一個表的每一行與第二個表的每一行進行匹配。如果兩個輸入表分別有 x 和 y 行羹饰,則結果表有 x*y 行伊滋。
由于交叉連接(CROSS JOIN)有可能產生非常大的表,使用時必須謹慎队秩,只在適當?shù)臅r候使用它們笑旺。
外部連接
SQL 標準定義了三種類型的外部連接: LEFT、RIGHT 和 FULL, PostgreSQL 支持所有這些馍资。對于左外連接筒主,首先執(zhí)行一個內連接。然后迷帜,對于表 T1 中不滿足表 T2 中連接條件的每一行物舒,其中 T2 的列中有 null 值也會添加一個連接行色洞。因此戏锹,連接的表在 T1 中每一行至少有一行