Saya memiliki dua set data titik di ArcGIS, keduanya diberikan dalam koordinat WGS84 lat / lon dan poin-poinnya tersebar di seluruh dunia. Saya ingin mencari titik terdekat di Dataset A ke setiap titik di Dataset B, dan mendapatkan jarak di antara mereka dalam kilometer.
Ini tampaknya seperti penggunaan sempurna alat Dekat, tapi itu memberi saya hasil dalam sistem koordinat titik input: yaitu, derajat desimal. Saya tahu saya bisa memproyeksikan ulang data, tetapi saya mengumpulkan ( dari pertanyaan ini ) bahwa sulit (jika bukan tidak mungkin) untuk menemukan proyeksi yang akan memberikan jarak akurat di seluruh dunia.
Jawaban atas pertanyaan itu menyarankan menggunakan rumus Haversine untuk menghitung jarak menggunakan koordinat garis lintang-bujur secara langsung. Apakah ada cara untuk melakukan ini dan mendapatkan hasil dalam km menggunakan ArcGIS? Jika tidak, apa cara terbaik untuk mendekati ini?
sumber
Ini bukan solusi ArcGIS, tetapi menggunakan model data Round Earth dalam database spasial akan melakukan trik. Menghitung jarak bumi dalam basis data yang mendukung ini akan sangat mudah. Saya dapat menyarankan Anda dua bacaan:
http://postgis.net/workshops/postgis-intro/geography.html
http://blog.safe.com/2012/08/round-earth-data-in-oracle-postgis-and-sql-server/
sumber
Anda membutuhkan perhitungan jarak yang berfungsi dengan Lat / Long. Vincenty adalah yang akan saya gunakan (akurasi 0,5mm). Saya telah bermain dengannya sebelumnya, dan tidak terlalu sulit untuk digunakan.
Kode ini agak panjang, tetapi berhasil. Diberi dua poin dalam WGS, ia akan mengembalikan jarak dalam meter.
Anda bisa menggunakan ini sebagai skrip Python di ArcGIS, atau membungkusnya dengan skrip lain yang hanya diulangi pada dua Point Shapefile dan membuat matriks jarak untuk Anda. Atau, mungkin lebih mudah untuk memberi makan hasil GENERATE_NEAR_TABLE dengan menemukan 2-3 fitur terdekat (untuk menghindari komplikasi kelengkungan bumi).
sumber
Saya membuat pengalaman serupa dengan dataset kecil menggunakan alat Point Distance. Dengan melakukan itu, Anda tidak dapat secara otomatis menemukan titik terdekat di Dataset A Anda, tetapi setidaknya dapatkan output tabel dengan hasil km atau m yang bermanfaat. Pada langkah berikutnya Anda bisa memilih jarak terpendek ke setiap titik Dataset B di luar tabel.
Tetapi pendekatan ini akan tergantung pada jumlah poin dalam dataset Anda. Mungkin tidak berfungsi dengan baik dengan kumpulan data besar.
sumber
Jika Anda membutuhkan pengukuran geodesik presisi tinggi dan kuat, gunakan GeographicLib , yang aslinya ditulis dalam beberapa bahasa pemrograman, termasuk C ++, Java, MATLAB, Python, dll.
Lihat CFF Karney (2013) "Algoritma untuk geodesik" untuk referensi sastra. Perhatikan bahwa algoritma ini lebih kuat dan akurat daripada algoritma Vincenty, misalnya di dekat antipode.
Untuk menghitung jarak dalam meter antara dua titik, dapatkan
s12
atribut jarak dari solusi geodesik terbalik . Misalnya, dengan paket geographiclib untuk PythonAtau buat fungsi kenyamanan, yang juga mengubah dari meter ke kilometer:
Sekarang untuk menemukan titik terdekat antara daftar
A
danB
, masing-masing dengan 100 poin:sumber