Làm cách nào để có được giá trị đồng hồ đo khoảng cách giữa hai hình học trong PostGIS?


13

Tôi có một câu hỏi đơn giản về tính toán khoảng cách trong PostGIS.

Tôi muốn có được khoảng cách giữa hai hình học. Tôi đang sử dụng sid này: 4269 tính bằng mét những gì tôi đang làm bây giờ là thế này: ST_Distance((a.geom,b.geom)) FROM ...nhưng tôi đang nhận được kết quả bằng độ. Tôi nghĩ rằng tôi nên làm việc với địa lý nhưng làm thế nào tôi có thể đúc một địa lý cho địa lý? Tôi đã thử với (a.geom :: geography) nhưng tôi gặp lỗi.

Tôi có thể làm gì để có kết quả tính bằng mét?

Cảm ơn bạn

Câu trả lời:


20

với ST_Distance_Sphere bạn có thể đạt được điều đó:

ST_Distance_Sphere(a.geom,b.geom)

ERREUR: la fonction st_distance_spheroid (hình học, hình học) n'existe pas ... tôi vừa thêm (a.geom, b.geom, 'SPHEROID ["WGS 84", 6378137,298.257223563]') và bây giờ nó đang hoạt động tốt bạn rất nhiều
YassineGeoma

1
tốt, bạn đã sử dụng một hàm khác, st_distance_spheroid chậm hơn st_distance_sphere nhưng chính xác hơn.
Francisco Valdez

Còn khoảng cách tối đa giữa 2 hình học thì sao?
vasilakisfil

Khoảng cách tối đa sẽ là earth_radius - minim_distance, sẽ đi theo chiều ngược lại. (tiêu đề + 180))
Francisco Valdez

1
@ don-prog Nó hoạt động cho điểm 3D và 2D:SELECT ST_Distance_Sphere(ST_GeomFromEWKT('SRID=4326;POINT(-72.1235 42.3521 4)'), ST_GeomFromEWKT('SRID=4326;POINT(-72.1260 42.45 15)'))
Francisco Valdez

3

Đơn vị của SRID 4269 ( NAD 83 ) không phải là mét - đây là phép chiếu trắc địa , tức là tọa độ là độ (tọa độ địa lý).

Câu trả lời của pacofvf sẽ cung cấp cho bạn khoảng cách tính bằng mét, nhưng nếu bạn thực sự có tọa độ nội bộ được chỉ định bằng mét thì bạn nên sử dụng hệ thống tọa độ dự kiến. Có lẽ đối với Bắc Mỹ, bạn muốn một cái gì đó như Hệ thống tọa độ máy bay nhà nước có một số dự đoán khác nhau tùy thuộc vào khu vực bạn muốn lập bản đồ.

Tôi nghi ngờ mặc dù bạn chỉ đang sử dụng các giá trị lat / lon nên có lẽ đoạn thứ hai này không liên quan - chỉ sử dụng ST_Distance_Spherehàm như trên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.