Saya ingin mengetahui lokasi target yang tidak diketahui (koordinat lintang dan bujur). Ada 3 titik yang diketahui (pasangan koordinat lintang dan bujur) dan untuk setiap titik jarak dalam kilometer ke lokasi target. Bagaimana saya bisa menghitung koordinat lokasi target?
Sebagai contoh, katakan saya memiliki poin data berikut
37.418436,-121.963477 0.265710701754km
37.417243,-121.961889 0.234592423446km
37.418692,-121.960194 0.0548954278262km
Apa yang saya suka adalah apa matematika untuk fungsi yang menganggapnya sebagai input dan mengembalikan 37.417959, -121.961954 sebagai output.
Saya mengerti bagaimana menghitung jarak antara dua titik, dari http://www.movable-type.co.uk/scripts/latlong.html Saya mengerti prinsip umum bahwa dengan tiga lingkaran seperti ini Anda mendapatkan tepat satu titik tumpang tindih. Yang saya kabur adalah matematika yang diperlukan untuk menghitung titik itu dengan input ini.
Jawaban:
Setelah beberapa melihat-lihat Wikipedia dan pertanyaan / jawaban yang sama di StackOverflow , saya pikir saya akan menikamnya, dan mencoba mengisi kekosongan.
Pertama, Tidak yakin dari mana Anda mendapatkan output, tetapi tampaknya salah. Saya memplot titik-titik di ArcMap, buffer mereka ke jarak yang ditentukan, berlari berpotongan ke pada buffer, dan kemudian menangkap titik persimpangan untuk mendapatkan solusi. Output yang Anda usulkan adalah titik berwarna hijau. Saya menghitung nilai di kotak info, yaitu sekitar 3 meter dari apa yang ArcMap berikan untuk solusi yang berasal dari intersect.
Matematika di halaman wikipedia tidak terlalu buruk, hanya perlu menyelaraskan koordinat geodetik Anda dengan kartesian ECEF, yang dapat ditemukan sini . istilah a / x + h dapat digantikan oleh jari-jari bola authalic, jika Anda tidak menggunakan ellipsoid.
Mungkin yang paling mudah hanya memberi Anda beberapa kode yang didokumentasikan dengan baik (?), Jadi ini dia dengan python
sumber
Saya tidak yakin apakah saya naif, tetapi, jika Anda buffer setiap titik berdasarkan ukuran, dan kemudian memotong ketiga lingkaran yang akan membuat Anda mendapatkan lokasi yang benar?
Anda dapat menghitung persimpangan menggunakan API spasial. Contoh:
sumber
Catatan berikut menggunakan geometri planaritmik (yaitu Anda harus memproyeksikan koordinat Anda ke sistem koordinat lokal yang sesuai).
Alasan saya, dengan contoh yang berhasil di Python, mengikuti:
Ambil 2 titik data (panggil mereka
a
danb
). Hubungi titik target kamix
. Kami sudah tahu jarakax
danbx
. Kita dapat menghitung jarakab
menggunakan teorema Pythagoras.Sekarang, Anda bisa menentukan sudut garis-garis ini:
Sayangnya saya kekurangan waktu untuk menyelesaikan jawaban untuk Anda, Namun, sekarang Anda tahu sudutnya, Anda dapat menghitung dua lokasi yang mungkin untuk
x
. Kemudian, menggunakan titik ketiga c Anda dapat menghitung lokasi mana yang benar.sumber
Ini mungkin berhasil. Dengan cepat lagi dalam python, Anda bisa meletakkan ini di tubuh fungsi xN, yN = koordinat titik, r1 & r2 = nilai radius
rx & ry nilai adalah nilai kembali (harus dalam array) dari dua titik persimpangan pada lingkaran, jika itu membantu memperjelas hal-hal.
Lakukan ini untuk 2 lingkaran pertama, lalu lagi untuk yang pertama dan terakhir. Jika salah satu hasil dari iterasi pertama dibandingkan dengan hasil dari iterasi kedua (dalam beberapa toleransi, mungkin), maka Anda memiliki titik persimpangan. Ini bukan solusi yang bagus terutama ketika Anda mulai menambahkan lebih dari beberapa poin ke dalam proses, tetapi merupakan yang paling sederhana yang dapat saya lihat tanpa harus menyelesaikan sistem persamaan.
sumber
Anda dapat menggunakan API spasial dari postgis (fungsi St_Intersection, St_buffer). Seperti yang diperhatikan oleh fmark, Anda juga harus ingat bahwa Postgis menggunakan algoritma planar, tetapi untuk area kecil, menggunakan proyeksi equi-jauh tidak menimbulkan banyak kesalahan.
sumber
GEOGRAPHY
tipe daripadaGEOMETRY
tipe.Lakukan dalam bahasa PHP:
sumber