Đơn vị được sử dụng trong ST_Distance () là gì?


24

Tôi tự hỏi những gì các đơn vị của phao được trả lại từ ST_Distance.

Trong tài liệu có ghi:

... khoảng cách tối thiểu của cartesian (dựa trên ref không gian) giữa hai hình học trong các đơn vị dự kiến.

Những đơn vị dự kiến ​​là gì?

Hình học được lưu trữ trong một trường : geometry(Point,4326).

Câu trả lời:


36

Tôi nghĩ rằng đây là câu hỏi thường gặp nhất trong danh sách PostGIS theo thời gian :-)

Nếu dữ liệu của bạn ở SRID 4326 và bạn sử dụng geometryloại, kết quả sẽ không có ý nghĩa gì. Đó là bằng độ.

Để có được kết quả tính bằng mét, chỉ cần chọn để geographygõ và ST_Distancesẽ tính khoảng cách dọc theo vòng tròn lớn thay vào đó và trả về bằng mét.

geometry(Point,4326)::geography

Một tùy chọn khác là chiếu dữ liệu của bạn lên một số phép chiếu cục bộ dựa trên một đơn vị phù hợp. Sau đó, câu trả lời sẽ có trong đơn vị đó.


2
Dưới đây là một ví dụ để tìm khoảng cách giữa hai hàng trong bảng CHỌN ST_Distance (a.geom :: geography, b.geom :: geography) TỪ pur_gis a, pur_gis b WHERE a.id = '1' AND b.id = '2';
Brian McCall

4

Từ http://postgis.net/docs/ST_Distance.html

- Ví dụ về phép đo - đơn vị tính theo độ phẳng 4326 là WGS 84 đơn vị lat lat dài = độ

Nếu ST_Distanceđược đưa ra hai hình học, nó giả định rằng những hình học đó thực sự ở tọa độ cartesian (hoặc phẳng). Do đó, các đơn vị giống như các đơn vị trong tọa độ - thường là mét hoặc feet.

Vấn đề của bạn dường như là hệ thống tham chiếu không gian của bạn, 4326, thực sự sử dụng tọa độ địa lý (góc) - độ dài-lat - vì vậy kết quả ở độ (hơi vô nghĩa).


1
Kết quả hoàn toàn vô nghĩa, thậm chí không phần nào.
Paul Ramsey

@PaulRamsey. Chúng sẽ không giống như những gì tôi sẽ nhận được "đo" khoảng cách trên một phép chiếu của ArrayCaree chứ?
Martin F

Trên PC, bạn sẽ lấy lại các đơn vị tuyến tính và ít nhất có thể nói "OK, tôi biết các đơn vị này có thể bị biến dạng nghiêm trọng". Lấy lại "độ", mọi người có thể bị cám dỗ nghĩ "aha, tôi có một khoảng cách góc ở đây, chỉ cần nhân với 2R và tôi sẽ có một khoảng cách tuyến tính". Các đơn vị thực hiện một phép đo xấu có khả năng gây hiểu lầm khủng khiếp hơn nữa. Và PC rất khủng khiếp. Tôi không biết tại sao nó lại có tên chiếu ... không giữ khoảng cách, không bảo toàn hướng, không bảo toàn khu vực ...
Paul Ramsey

PC bảo toàn khoảng cách dọc theo đường xích đạo và vuông góc với đường xích đạo. Ngoài các chuyển đổi radian và bán kính cần thiết (phải thừa nhận là một sự bất tiện rất lớn), kết quả của việc sử dụng ST_Distance trên 4326 hình học sẽ có cùng một nhược điểm và lợi ích chung phải được xem xét khi sử dụng ST_Distance với hình học chiếu. Có lẽ cuộc tranh luận tốt hơn nên là (không "phần nào" so với "hoàn toàn" vô nghĩa nhưng) "ST_Distance và ST_Area thậm chí có được phép trả lại kết quả cho 4326 hình học không?"
Martin F
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.