Truy vấn PostGIS ST_Distance đơn giản cho hai điểm từ cùng một bảng hình học?


11

Lưu ý: Câu hỏi này đã được xuất bản tại Stackoverflow lúc đầu .

Tôi có một bảng hình học points_tablevới SRID 4326và một vài điểm trong đó.

Tôi cần tìm khoảng cách giữa một cặp điểm (tính năng) từ bảng này.

Tôi muốn chọn một điểm với id = Xvà một điểm khác với id = Yvà sau đó tìm khoảng cách giữa chúng với ST_Distancehàm.

Tôi biết cách truy vấn hai điểm này từ cơ sở dữ liệu:

select * from points_table where id = X or id = Y;

Nhưng truy vấn này trả về một kết quả mà tôi không biết làm thế nào để chuyển đến ST_Distance, vì ST_Distancecó 2 tham số.

Tôi đã thử Select ST_Distance(select the_geom from points_table where id = X or id = Y);

Nhưng nó rõ ràng là sai.

Làm cách nào để tìm khoảng cách giữa hai điểm hình học (tính năng) từ một bảng?

PS Tất cả các ví dụ tôi đã tìm thấy cho đến nay cho thấy việc sử dụng ST_Distance với các điểm được mã hóa thành các đối số của hàm ST_Distance. Tôi chưa tìm thấy một ví dụ, trong đó ST_Distance được sử dụng để tính khoảng cách giữa hai điểm từ cùng một bảng.

Câu trả lời:


27

Bạn cần tham chiếu bảng của mình hai lần, cung cấp cho nó các bí danh khác nhau:

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
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.