我有了超過15000行的表之間的距離。POSTGIS計算積分
該表具有locationID,的isEmpty,經度和緯度領域。
欲計算每個點之間的距離具有的isEmpty場= 1,其它並插入到結果使用POSTGIS新表。
請指教一下是編寫執行這一要求
我有了超過15000行的表之間的距離。POSTGIS計算積分
該表具有locationID,的isEmpty,經度和緯度領域。
欲計算每個點之間的距離具有的isEmpty場= 1,其它並插入到結果使用POSTGIS新表。
請指教一下是編寫執行這一要求
好了,解釋爲由於SQL語句的最佳實踐 - 現在它更清晰。
在POSTGIS你不必計算所有跋涉去尋找其他的點多少有一些距離。
添加擴展數據庫
CREATE EXTENSION postgis;
現在加上幾何類型的列
ALTER TABLE mytable ADD COLUMN geom geometry;
你需要一些指標來
CREATE INDEX mytable_geom_idx ON mytable USING gist(geom);
現在填充新列
UPDATE mytable SET geom = ST_SetSRID(ST_MakePoint(lon, lat),4326);
現在查詢:
Select a.locationID, count(*)
from mytable a
join mytable b on a.locationID!=b.locationID
and ST_Dwithin(a.geom::geography,b.geom::geography,152)
where a.isEmpty=1
group by 1;
ST_DWithin與地理類型正在距離米,152米〜500英尺
我沒有測試它,所以如果有東西不行,請給我寫評論
你需要歐氏距離或路由嗎?如果首先它是一個簡單連接的情況,但是...每個isEmpty = 1與其他所有其他isEmpty = 1或isEmpty = 1與所有其他人?您可以修改表格,還是必須對現有數據執行此操作而無需進行修改?當然你知道15k^2-15k =〜225M記錄?你真的需要這些數據?也許這會更好地數數'點播'?如果你需要路由這個數據將至少計算幾個月(使用強大的服務器) – Jendrusk
@jendrusk isEmpty有值0或1記錄與1值是約2000記錄,我需要計算每個點之間的距離與hasEmpty = 1與所有其他點,因爲我需要知道每個點與isEmpty = 1多少其他點500英尺內 – Eyla
是的我可以修改表 – Eyla