Đây có lẽ là một câu hỏi đơn giản, nhưng tôi không giỏi PostGIS và không hoàn toàn lúng túng tất cả điều này.Khoảng cách giữa 2 POINTs trong Postgis trong srid 4326 in mét
Về cơ bản tôi có một bảng (nodes
) với cột LƯU Ý (point
). Tôi đã tạo ra một chỉ mục trên cột này
create index nodes__points on nodes using gist (point)
Cột đã được tạo ra với
select addgeometrycolumn('nodes', 'points', 'POINT', 4326, 2)
Tôi đang sử dụng SRID 4326 vì tôi thêm dữ liệu đó là theo hình thức (vĩ độ, kinh độ). (tức là hệ thống phối hợp nơi vị trí của Dublin, Ireland là lat = 53.353 lon = -6.264 (mà tôi đã thêm với GeomFromText('POINT(-6.264 53.535)')
)).
Đối với mỗi điểm, tôi muốn tìm tất cả các điểm nằm trong khoảng cách 1km ở chính giữa điểm đó (vì vậy selcet a.id, count(*) from nodes as a, nodes as b where SOME_DISTANCE_FUNCTION_HERE(a.point, b.point, 1000) group by a.id;
. Nó không nhất thiết phải là một con số hunteristic thô. một vòng tròn 1km là tốt, không cần phải chính xác 1km, chỉ là thứ tự độ lớn đó.
ST_Distance
/ST_DWithin
/etc tất cả các đơn vị của SRID, cho 4326/WGS64 là độ 1 = 1 độ của thái độ/kinh độ) Nhưng tôi muốn sử dụng mét
Tôi đã thử ST_distance_sphere
và st_dwithin
có thể sử dụng mét, nhưng nếu tôi làm như vậy, explain
cho thấy rằng chỉ mục không được sử dụng.
Làm thế nào tôi có thể nhận được gần như những gì tôi muốn, và sử dụng chỉ mục địa lý?
CẬP NHẬT: Đây là phiên bản PostgreSQL 9.1 và PostGIS 2.0 svn.
Có lẽ một số giúp đỡ: [ST_DWithin mất thông số như mức độ, không mét, tại sao?] (Http://stackoverflow.com/questions/8444753/st-dwithin -takes-parameter-as-degree-not-mét-why) – radek
câu hỏi bắt buộc: Phiên bản PostGIS là gì? Phiên bản PostgreSQL nào? – filiprem