Pertanyaan sederhana PostGIS ST_Distance untuk dua poin dari tabel geometri yang sama?

11

Catatan: Pertanyaan ini dipublikasikan di Stackoverflow pada awalnya .

Saya memiliki tabel geometri points_tabledengan SRID 4326dan beberapa poin di dalamnya.

Saya perlu menemukan jarak antara sepasang titik (fitur) dari tabel ini.

Saya ingin memilih satu titik dengan id = Xdan titik lain dengan id = Ydan kemudian menemukan jarak di antara mereka dengan ST_Distancefungsi.

Saya tahu cara menanyakan dua poin ini dari database:

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

Tapi kueri ini mengembalikan hasil, yang saya tidak tahu cara menyampaikannya ST_Distance, karena ST_Distancemembutuhkan 2 parameter.

saya telah mencoba Select ST_Distance(select the_geom from points_table where id = X or id = Y);

Tapi itu jelas salah.

Bagaimana saya bisa menemukan jarak antara dua titik geometri (fitur) dari sebuah tabel?

PS Semua contoh yang saya temukan sejauh ini menunjukkan penggunaan ST_Distance dengan poin yang di-hardcod ke argumen fungsi ST_Distance. Saya belum menemukan contoh, di mana ST_Distance digunakan untuk menghitung jarak antara dua titik dari tabel yang sama.

skanatek
sumber

Jawaban:

28

Anda perlu mereferensikan meja Anda dua kali, memberikannya alias berbeda:

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
Mike T
sumber