無限運行的查詢我現在有一個名爲cardata數據庫方案,該方案除其他具有這些列:的Postgres/PostGIS的數據庫 - 與ST_MakeLine
+-------------+-----------------------------+---------------------------------+
| tripid(int) | point geometry(point, 4326) | line geometry(linestring, 4326) |
+-------------+-----------------------------+---------------------------------+
| 1 | <data> | |
| 1 | <data> | |
的point
列包含連續的GPS測量,正因爲如此,我想將它們轉換成線串。整個旅程可以包含數千個點,但是我希望每個點之間都有一個線條。
我曾試圖制訂以此爲update
我的表看起來像這樣:
UPDATE cardata
SET line = ST_MakeLine(foo.point, lead)
FROM (
SELECT point, LEAD(point, 1)
OVER w
FROM cardata
GROUP BY point
WINDOW w AS (ORDER BY point)
) AS foo
WHERE lead IS NOT NULL
的想法是,對於每一行我用這一點,並在未來做一個線串保存(ST_MakeLine
)在第一行(line
)。這應該繼續,直到旅程結束,忽略LEAD
應該爲空的最後一個條目。
現在我不知道如何制定一個區分不同tripid
,但這是另一次的單個查詢。現在我只想在整個表格的所有點之間使用線串。
然而,問題是我的查詢似乎永遠運行,並沒有改變表中的任何內容。我不懂爲什麼。我試着測試內部SELECT
查詢的行爲如預期的那樣 - 它返回總共47055行46561行。這也很奇怪,因爲我認爲它應該返回47054行 - 即只能得出結論:對於最後一個條目,LEAD
爲空。
最後,我試着在兩個隨機點上運行ST_MakeLine
,這似乎工作正常。
是什麼讓這個查詢永遠運行?
你有一個行程內,標誌着該點的順序列?如果不是,那麼數據不可恢復。 –
我有每個入口日誌的ID和時間戳 – Treeline
原諒我是我很笨,但它看起來像我正在製作47000+行,這將是非常緩慢。你的小組並沒有任何影響。 – e4c5