Apa unit yang digunakan dalam ST_Distance ()?

24

Aku ingin tahu dari mana unit pelampung yang dikembalikan ST_Distance.

Dalam dokumentasi itu tertulis:

... jarak minimum kartesian (berdasarkan ref spasial) antara dua geometri dalam unit yang diproyeksikan.

Apa saja unit yang diproyeksikan ini?

Geometri disimpan di lapangan: geometry(Point,4326).

stUrb
sumber

Jawaban:

36

Saya pikir ini adalah pertanyaan paling sering pada daftar PostGIS dari waktu ke waktu :-)

Jika data Anda dalam SRID 4326 dan Anda menggunakan geometryketik hasilnya tidak akan memberikan arti apa pun. Ini dalam derajat.

Untuk mendapatkan hasil dalam meter, cukup masukkan untuk geographymengetik dan ST_Distanceakan menghitung jarak di sepanjang lingkaran besar sebagai gantinya dan kembali dalam meter.

geometry(Point,4326)::geography

Pilihan lain adalah memproyeksikan data Anda ke beberapa proyeksi lokal berdasarkan unit yang sesuai. Maka jawabannya akan ada di unit itu.

Nicklas Avén
sumber
2
Berikut ini adalah contoh untuk menemukan jarak antara dua baris dalam tabel SELECT ST_Distance (a.geom :: geography, b.geom :: geography) DARI pure_gis a, pure_gis b WHERE a.id = '1' AND b.id = '2';
Brian McCall
4

Dari http://postgis.net/docs/ST_Distance.html

--Geometri contoh - unit dalam derajat planar 4326 adalah WGS 84 satuan lat panjang = derajat

Jika ST_Distancediberi dua geometri, diasumsikan geometri tersebut benar-benar dalam koordinat kartesius (atau planar). Dengan demikian, unit-unitnya sama dengan yang ada di koordinat - biasanya meter atau kaki.

Masalah Anda tampaknya adalah bahwa sistem referensi spasial Anda, 4326, sebenarnya menggunakan koordinat geografis (sudut) - derajat panjang-lat - sehingga hasilnya dalam derajat (agak tidak berarti).

Martin F
sumber
1
Hasil sepenuhnya tidak ada artinya, bahkan tidak sedikit pun.
Paul Ramsey
@PaulRamsey. Bukankah mereka akan sama dengan apa yang saya dapatkan "mengukur" jarak pada proyeksi PlateCaree?
Martin F
Pada PC, Anda akan mendapatkan unit linier kembali dan setidaknya bisa mengatakan "OK, saya tahu unit ini mengalami distorsi serius". Mendapatkan "derajat" kembali, orang mungkin tergoda untuk berpikir "aha, saya memiliki jarak sudut di sini, hanya perlu dikalikan dengan 2R dan saya akan memiliki jarak linear". Unit membuat pengukuran yang buruk bahkan berpotensi lebih menyesatkan. Dan PC sangat mengerikan, saya tidak tahu mengapa mendapatkan nama proyeksi ... tidak menjaga jarak, tidak menjaga arah, tidak melestarikan area ...
Paul Ramsey
PC menjaga jarak di sepanjang garis khatulistiwa dan tegak lurus ke garis khatulistiwa. Selain konversi radian dan radius yang diperlukan (diakui, ketidaknyamanan yang sangat besar), hasil menggunakan ST_Distance pada 4326 geometri akan memiliki campuran umum yang sama dengan kerugian dan manfaat yang harus dipertimbangkan ketika menggunakan ST_Distance dengan geometri proyeksi. Mungkin debat yang lebih baik seharusnya (bukan "agak" versus "seluruhnya" tidak berarti tetapi) "Haruskah ST_Distance dan ST_Area bahkan diizinkan untuk mengembalikan hasil dengan 4326 geometri?"
Martin F