Saya mencari algoritma yang ketika diberi pasangan garis lintang dan bujur dan terjemahan vektor dalam meter dalam koordinat Cartesian (x, y) akan memberi saya koordinat baru. Semacam seperti Haversine terbalik. Saya juga bisa bekerja dengan jarak dan transformasi heading, tetapi ini mungkin akan lebih lambat dan tidak seakurat. Idealnya, algoritme harus cepat karena saya sedang mengerjakan sistem tertanam. Akurasi tidak kritis, dalam jarak 10 meter akan bagus.
108
Jawaban:
Jika perpindahan Anda tidak terlalu besar (kurang dari beberapa kilometer) dan Anda tidak benar di kutub, gunakan perkiraan cepat dan kotor bahwa 111,111 meter (111,111 km) di arah y adalah 1 derajat (garis lintang) dan 111.111 * cos (garis lintang) meter di arah x adalah 1 derajat (garis bujur).
sumber
Seperti yang dikatakan Liedman dalam jawabannya, formula penerbangan Williams adalah sumber yang tak ternilai, dan untuk menjaga akurasi dalam jarak 10 meter untuk perpindahan hingga 1 km Anda mungkin perlu menggunakan yang lebih kompleks dari ini.
Tetapi jika Anda bersedia menerima kesalahan di atas 10m untuk poin mengimbangi lebih dari sekitar 200m Anda dapat menggunakan perhitungan bumi datar disederhanakan. Saya pikir kesalahan masih akan kurang dari 50m untuk offset hingga 1 km.
Ini akan kembali:
sumber
Saya menemukan bahwa Aviation formularium, di sini sangat bagus untuk jenis rumus dan algoritma. Untuk masalah Anda, lihat "lat / panjang yang diberikan radial dan jarak": di sini
Perhatikan bahwa algoritma ini mungkin agak terlalu rumit untuk Anda gunakan, jika Anda ingin tetap menggunakan fungsi trigonometri rendah, dll.
sumber
Mungkin masuk akal untuk memproyeksikan poinnya terlebih dahulu. Anda dapat membuat sesuatu seperti pseudo-code ini:
di mana (x, y) adalah offset yang diinginkan.
Anda tidak perlu menggunakan utm, sistem koordinat datar apa pun, yang masuk akal di wilayah Anda akan berhasil.
Perangkat lunak apa yang Anda gunakan?
sumber
Saya membuat peta khusus sederhana di Google Maps yang menggambarkan algoritma estimasi yang disebutkan oleh jawaban yang diterima (1/111111 == satu meter). Jangan ragu untuk melihat dan bermain dengannya di sini:
https://drive.google.com/open?id=1XWlZ8BM00PIZ4qk43DieoJjcXjK4z7xe&usp=sharing
sumber