Bagaimana saya bisa menghitung kaitan antara dua titik di PostGIS?


19

Bagaimana saya bisa menemukan kaitan antara dua titik di PostGIS?

Silakan tentukan dalam jawaban Anda apakah metode yang menghasilkan bantalan pada spheroid, atau bantalan planar.

Jawaban:


21

Menggunakan ST_Azimuth

Bantalan planar dapat dihitung menggunakan ST_Azimuth:

SELECT ST_Azimuth(ST_MakePoint(1,2), 
           ST_MakePoint(3,4))/(2*pi())*360 as degAz,
       ST_Azimuth(ST_MakePoint(3,4), 
           ST_MakePoint(1,2))/(2*pi())*360 As degAzrev

degaz   degazrev
------  ---------
45      225

Untuk azimuth bola (Mengutip grup pengguna potgis ):

Fungsi azimuth PostGIS tampaknya menggunakan fungsi arctan sederhana untuk menentukan azimuth. Jika Anda mengonversi koordinat Anda ke sistem koordinat yang diproyeksikan dan kemudian menjalankan kueri, hasil Anda akan jauh lebih dekat dengan hasil situs FCC.
Ini adalah konversi cepat ke UTM Zone 31:

select degrees(azimuth(
'POINT(634714.442133176 5802006.052402816)',
'POINT(634731.2410598891 5801981.648284801)'
));

yang menghasilkan azimuth 145.457858825445. Poin di tengah zona UTM, atau proyeksi yang lebih cocok akan memberikan hasil yang lebih baik.

Menggunakan fungsi trigonometri dan ST_distance_sphere

Ini adalah solusi yang saya pilih ketika saya harus berurusan dengan masalah ini, terutama karena alasan warisan (saya memiliki fungsi Python yang menghitung azimuth). Pertama, kita perlu menemukan fungsi yang akan memberi tahu kita jarak yang tepat antara dua titik. Mengutip manual postgis :

ST_distance_sphere (titik, titik) Mengembalikan jarak linear dalam meter antara dua titik lat / lon. Menggunakan bumi bulat dan jari-jari 6370986 meter. Lebih cepat dari distance_spheroid (), tetapi kurang akurat. Hanya diterapkan untuk poin.

Ukur Bujur dan Lintang jarak antara titik, dan gunakan arctanfungsi untuk mengambil sudut.


Saya akan mencoba memposting kode python nanti, dan mungkin membuat beberapa perbandingan antara metode - Jika saya dapat menemukan kode warisan ...
Adam Matan

Bisakah Anda mengklarifikasi bagaimana Anda bergerak dari jarak ke sudut atan? Trigonetri saya agak kabur ...
fmark

11

Bagi siapa pun yang menemukan pertanyaan ini sekarang - PostGIS mendukung ST_Azimuth pada geografi (spheroid) pada 2.0.0.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.