Bagaimana cara menghitung jarak antara dua koordinat GPS (menggunakan lintang dan bujur)?
math
geolocation
geometry
latitude-longitude
geography
nicudotro
sumber
sumber
Jawaban:
Hitung jarak antara dua koordinat dengan lintang dan bujur , termasuk implementasi Javascript.
Lokasi Barat dan Selatan negatif. Ingat menit dan detik dari 60 sehingga S31 30 'adalah -31,50 derajat.
Jangan lupa untuk mengubah derajat ke radian . Banyak bahasa memiliki fungsi ini. Atau perhitungan sederhana:
radians = degrees * PI / 180
.Berikut ini beberapa contoh penggunaan:
sumber
Number.prototype.toRad = function() { return this * (Math.PI / 180); };
. Atau, seperti yang ditunjukkan di bawah ini, Anda dapat mengganti(Math.PI/2)
dengan 0,0174532925199433 (... presisi apa pun yang Anda anggap perlu) untuk meningkatkan kinerja.R
biasanya berarti dalam matematika, lalu cari yang relevan, jumlah terkait Bumi untuk melihat apakah jumlahnya cocok.earthRadiusKm
menjadivar earthRadiusMiles = 3959;
, fyi.Cari haversine dengan Google; inilah solusi saya:
sumber
C # Versi Haversine
Berikut ini. NET Fiddle dari ini , sehingga Anda dapat mengujinya dengan Lat / Long Anda sendiri.
sumber
Algoritma Haversine Versi Java berdasarkan pada balasan Roman Makarov untuk utas ini
sumber
0.07149
km sedangkan formula Anda memberi saya0.07156
akurasi sekitar 99%Ini sangat mudah dilakukan dengan tipe geografi di SQL Server 2008.
4326 adalah SRID untuk model Earth elipsoidal WGS84
sumber
Berikut adalah fungsi Haversine dalam Python yang saya gunakan:
sumber
Tergantung pada seberapa akurat Anda membutuhkannya, jika Anda membutuhkan akurasi, yang terbaik untuk melihat suatu algoritma dengan menggunakan ellipsoid, daripada bola, seperti algoritma Vincenty, yang akurat hingga mm. http://en.wikipedia.org/wiki/Vincenty%27s_algorithm
sumber
Ini dia dalam C # (lat dan long di radian):
Jika lat dan panjang Anda dalam derajat maka bagi dengan 180 / PI untuk dikonversi ke radian.
sumber
Saya perlu menghitung banyak jarak antara titik-titik untuk proyek saya, jadi saya melanjutkan dan mencoba mengoptimalkan kode, saya temukan di sini. Rata-rata di berbagai browser implementasi saya yang baru berjalan 2 kali lebih cepat daripada jawaban yang paling banyak dipilih.
Anda dapat bermain dengan jsPerf saya dan lihat hasilnya di sini .
Baru-baru ini saya perlu melakukan hal yang sama di python, jadi di sini adalah implementasi python :
Dan demi kelengkapan: Haversine on wiki.
sumber
Versi PHP:
(Hapus semua
deg2rad()
jika koordinat Anda sudah ada dalam radian.)sumber
Fungsi T-SQL, yang saya gunakan untuk memilih catatan berdasarkan jarak untuk pusat
sumber
Jika Anda membutuhkan sesuatu yang lebih akurat maka lihatlah ini .
sumber
I. Mengenai metode "Breadcrumbs"
Di bawah ini lihat fungsi dalam C yang memperhitungkan # 1 dan # 2:
II Ada cara yang lebih mudah yang memberikan hasil yang cukup bagus.
Dengan Kecepatan Rata-Rata.
Trip_distance = Trip_average_speed * Trip_time
Karena Kecepatan GPS terdeteksi oleh efek Doppler dan tidak terkait langsung dengan [Lon, Lat], maka setidaknya dapat dianggap sebagai sekunder (cadangan atau koreksi) jika bukan sebagai metode perhitungan jarak utama.
sumber
Jika Anda menggunakan .NET jangan mengaktifkan kembali roda. Lihat System.Device.Location . Kredit ke fnx di komentar di jawaban lain .
sumber
Kode Lua ini diadaptasi dari hal-hal yang ditemukan di Wikipedia dan dalam alat GPSbabel Robert Lipe :
sumber
sumber
Ini adalah versi dari "Henry Vilinskiy" yang diadaptasi untuk MySQL dan Kilometer:
sumber
MySQL
berkataSomething is wrong in your syntax near '' on line 8
// declare distance float;
di sini adalah implementasi Swift dari jawabannya
sumber
Saya mengambil jawaban teratas dan menggunakannya dalam program Scala
saya menjelajah fungsi agar dapat dengan mudah menghasilkan fungsi yang memiliki salah satu dari dua lokasi tetap dan hanya membutuhkan sepasang lat / lon untuk menghasilkan jarak.
sumber
Saya kira Anda menginginkannya di sepanjang lengkungan bumi. Dua titik Anda dan pusat bumi ada di pesawat. Pusat bumi adalah pusat lingkaran pada bidang itu dan dua titik (kira-kira) berada di sekeliling lingkaran itu. Dari sana Anda dapat menghitung jarak dengan mencari tahu sudut dari satu titik ke titik lainnya.
Jika titik-titiknya tidak sama dengan ketinggian, atau jika Anda perlu memperhitungkan bahwa bumi bukanlah bola yang sempurna, ia akan menjadi sedikit lebih sulit.
sumber
Baru-baru ini saya harus melakukan hal yang sama. Saya menemukan situs web ini sangat membantu menjelaskan trigonometri bola dengan contoh-contoh yang mudah diikuti.
sumber
Anda dapat menemukan implementasi ini (dengan beberapa penjelasan yang baik) di F # on fssnip
di sini adalah bagian penting:
sumber
Saya perlu menerapkan ini di PowerShell, semoga bisa membantu orang lain. Beberapa catatan tentang metode ini
Saya menggunakan Haversine, seperti posting lain menunjukkan formula Vincenty jauh lebih akurat
sumber
Versi scala
sumber
// Mungkin kesalahan ketik?
Kami memiliki dlon variabel yang tidak digunakan di GetDirection,
saya kira
seharusnya
sumber
Inilah implementasi saya di Elixir
sumber
Versi Dart
Algoritma Haversine.
sumber
Saya pikir versi algoritma di R masih hilang:
sumber
Berikut variasi Kotlin:
sumber