Aynı geometri tablosundan iki nokta için basit PostGIS ST_Distance sorgusu?


11

Not: Bu soru ilk önce Stackoverflow'da yayınlandı .

Bir geometri masam points_tablevar SRID 4326ve içinde birkaç nokta var.

Bu tablodan bir çift nokta (özellikler) arasında bir mesafe bulmam gerekiyor.

İle bir noktayı id = Xve başka bir noktayı seçmek id = Yve sonra ST_Distanceişlev ile aralarında bir mesafe bulmak istiyorum .

Bu iki noktayı veritabanından nasıl sorgulayacağımı biliyorum:

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

Ancak bu sorgu 2 parametre alır ST_Distance, çünkü ben geçmek için nasıl bilmiyorum bir sonuç döndürür ST_Distance.

denedim Select ST_Distance(select the_geom from points_table where id = X or id = Y);

Ama bu kesinlikle yanlış.

Tablodan iki geometri noktası (unsur) arasındaki mesafeyi nasıl bulabilirim?

PS Şimdiye kadar bulduğum tüm örnekler ST_Distance fonksiyonunun argümanlarına sabit kodlanmış ST_Distance kullanımını göstermektedir . ST_Distance aynı tablodan iki nokta arasındaki bir mesafeyi hesaplamak için kullanılan bir örnek bulamadım.

Yanıtlar:


28

Farklı takma adlar vererek tablonuza iki kez başvurmanız gerekir:

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.