PostGIS'te iki geometri arasındaki mesafe ölçer değerini nasıl alabilirim?


14

PostGIS'te mesafeleri hesaplamakla ilgili basit bir sorum var.

İki geometri arasındaki mesafeyi bulmak istiyorum. Bu sid: 4269'u metre olarak kullanıyorum, şu anda yaptığım şey şu: ST_Distance((a.geom,b.geom)) FROM ...ama derece olarak sonuç alıyorum. Coğrafya ile çalışmam gerektiğini düşünüyorum ama bir coğrafyayı nasıl bir coğrafyaya atabilirim? (A.geom :: coğrafya) ile denedim ama bir hata alıyorum.

Sonucu metre cinsinden elde etmek için ne yapabilirim?

Teşekkür ederim

Yanıtlar:


20

ST_Distance_Sphere ile bunu başarabilirsiniz:

ST_Distance_Sphere(a.geom,b.geom)

ERREUR: la fonction st_distance_spheroid (geometri, geometri) n'existe pas ... i ekledim (a.geom, b.geom, 'SPHEROID ["WGS 84", 6378137,298.257223563]') ve şimdi iyi çalışıyor çok teşekkür ederim!
YassineGeoma

1
farklı bir işlev kullandınız, st_distance_spheroid, st_distance_sphere'den daha yavaş ama daha kesin.
Francisco Valdez

2 geometri arasındaki maksimum mesafe ne olacak?
vasilakisfil

Maksimum mesafe, karşı yönde ilerleyen earth_radius - minimum_distance olacaktır. (+ 180º pozisyonu)
Francisco Valdez

1
@ don-prog 3D ve 2D nokta için çalışır: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

SRID 4269 ( NAD 83 ) birimleri metre değildir - bu bir jeodezik projeksiyon , yani koordinatlar derecedir (coğrafi koordinatlar).

pacofvf'in cevabı size metre cinsinden mesafeyi verecektir, ancak gerçekten başlangıç ​​koordinatlarınızı metre cinsinden belirlediyseniz, o zaman öngörülen bir koordinat sistemi kullanmalısınız. Muhtemelen Kuzey Amerika için, eşlemek istediğiniz bölgeye bağlı olarak bir dizi farklı projeksiyona sahip Devlet Düzlem Koordinat Sistemi gibi bir şey istiyorsunuz.

Sadece lat / lon değerlerini kullandığınızdan şüpheleniyorum, bu yüzden muhtemelen bu ikinci paragraf alakalı değil - sadece ST_Distance_Sphereyukarıdaki işlevi kullanın .

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.