- Saat menambahkan perpindahan x,y dalam satuan meter ke koordinat lintang/bujur, jika jarak perpindahan tidak lebih dari beberapa km dan bukan dekat kutub, perhitungan cepat bisa dilakukan hanya dengan rumus pendekatan sederhana
- Perhitungan dasarnya adalah menganggap 111.111 m pada arah y sebagai 1 derajat lintang, dan
111111 * cos(latitude) m pada arah x sebagai 1 derajat bujur; jadi perpindahan 100 m ke utara bisa dihitung dengan menambahkan 100 / 111111 derajat
- Ide yang sama juga bisa dihitung dengan menganggap bumi sebagai bola dengan jari-jari
R=6378137, menggunakan dLat=dn/R, dLon=de/(R*cos(lat)); pada lintang 51 derajat dengan dn=100, de=100, hasilnya latO=51.00089832, lonO=0.001427437
- Jika kebutuhan akurasi dalam 10 m dan offset hingga 1 km, rumus yang lebih kompleks seperti Aviation Formulary bisa digunakan, tetapi pendekatan bidang datar sederhana juga diperkirakan memberi galat kurang dari 50 m pada offset 1 km
- Jika perlu menangani efek perubahan panjang 1 derajat menurut lintang, lebih aman memakai rumus meters per degree, atau mengonversi ke sistem koordinat proyeksi lokal, menambahkan perpindahan, lalu mengubahnya kembali ke lintang/bujur
Untuk perpindahan jarak kecil, pendekatan 111.111 m/derajat sudah memadai
- Untuk perpindahan kecil, perubahan lintang/bujur dapat dihitung dengan pendekatan berikut
- arah y 111.111 m ≈ 1 derajat lintang
- arah x
111111 * cos(latitude) m ≈ 1 derajat bujur
- Koordinat baru kira-kira didapat seperti ini
lat_new = lat + dy / 111111
lon_new = lon + dx / (111111 * cos(latitude))
- Pada
cos(latitude), gunakan satuan yang sesuai dengan lingkungan eksekusi
- Jika lingkungan membutuhkan radian, perlu konversi
latitude * pi / 180
- Pendekatan ini cocok bila perpindahan tidak terlalu besar, tidak berada tepat dekat kutub, dan akurasi yang dibutuhkan tidak terlalu tinggi
Dasar angka 111.111 m dan rentang galatnya
- Nilai 111.111 terhubung dengan definisi historis meter
- karena Prancis awalnya mendefinisikan meter sebagai
10^7 per bagian dari jarak yang diukur sepanjang meridian Paris dari khatulistiwa ke kutub utara
10^7 / 90 = 111.111,1 m setara dengan 1 derajat lintang
- Dalam verifikasi komentar, saat x,y masing-masing 1.400 m dan perpindahan total 2 km dibandingkan dengan perhitungan UTM, hasilnya cocok dengan galat tidak lebih dari 8,6 m
- lintang terburuk pada kondisi tersebut adalah 81 derajat
- galat tetap di bawah 10 m hingga melewati 89,6 derajat
- Rumus sederhana ini mencerminkan efek bahwa bujur makin menyempit saat mendekati kutub melalui
cos(latitude)
- karena jarak sebenarnya untuk 1 derajat bujur mengecil, perpindahan meter yang sama pada arah x dikonversi menjadi perubahan bujur yang lebih besar di lintang tinggi
Perhitungan yang sama dengan memakai jari-jari bumi
- Perhitungan yang sama juga bisa dinyatakan dengan rumus berbasis jari-jari bumi
//Position, decimal degrees
lat = 51.0
lon = 0.0
//Earth’s radius, sphere
R=6378137
//offsets in meters
dn = 100
de = 100
//Coordinate offsets in radians
dLat = dn/R
dLon = de/(R*Cos(Pi*lat/180))
//OffsetPosition, decimal degrees
latO = lat + dLat * 180/Pi
lonO = lon + dLon * 180/Pi
- Contoh ini menghasilkan nilai berikut
latO = 51,00089832
lonO = 0,001427437
- Metode ini hampir sama dengan pendekatan 111.111 m/derajat, dengan perbedaan bahwa ia memakai nilai berbasis jari-jari yang lebih dekat ke
111.319,5 m
- Perpindahan x harus mendekati arah timur-barat yang sebenarnya, dan perpindahan y harus mendekati arah utara-selatan
- jika easting/northing pada sistem proyeksi lokal mengalami rotasi, komponen itu harus lebih dulu diubah ke komponen timur-barat dan utara-selatan
Pilihan saat membutuhkan akurasi lebih tinggi
- Rumus “lat/long given radial and distance” dari Aviation Formulary dapat digunakan untuk menghitung lintang/bujur baru dari jarak dan azimut
- untuk lingkungan embedded yang ingin meminimalkan penggunaan fungsi trigonometri, ini bisa terasa agak rumit
- parameter jarak diperlakukan sebagai nilai radian dalam bentuk
distance / earth radius
- Cara lain adalah memproyeksikan dulu ke sistem koordinat bidang yang sesuai untuk wilayah tersebut, lalu menambahkan offset
flat_coordinate = latlon_to_utm(original_coordinate)
new_flat_coordinate = flat_coordinate + (x,y)
result_coordinate = utm_to_latlon(new_flat_coordinate)
- Metode ini tidak harus memakai UTM; sistem koordinat bidang apa pun yang cocok untuk wilayah tersebut dapat digunakan
- Namun, jika perpindahan melewati batas zona UTM hingga masuk ke zona UTM lain, metode ini sulit diterapkan secara langsung
Contoh implementasi per bahasa dan rumus presisi menurut lintang
- Contoh Python menjadikan langsung pendekatan 111.111 m/derajat sebagai fungsi
from math import cos, radians
def meters_to_lat_lon_displacement(m, origin_latitude):
lat = m / 111111
lon = m / (111111 * cos(radians(origin_latitude)))
return lat, lon
- Contoh R juga melakukan perhitungan yang sama
deg2rad = function(deg) {(deg * pi) / (180)}
meters_to_lat_lon_displacement = function(m, origin_latitude){
lat = m / 111111
lon = m / (111111 * cos((deg2rad(origin_latitude))))
return(list(lat=lat,lon=lon))
}
- Rumus meters per degree yang lebih akurat menurut lintang dapat ditulis seperti berikut
meters_per_degree_lat = (111132.92 - 559.82 * np.cos(2 * lat0_rad) +
1.175 * np.cos(4 * lat0_rad) - 0.0023 * np.cos(6 * lat0_rad))
meters_per_degree_lon = (111412.84 * np.cos(lat0_rad) -
93.5 * np.cos(3 * lat0_rad) + 0.118 * np.cos(5 * lat0_rad))
- Rumus presisi ini mencerminkan bahwa panjang 1 derajat lintang dan 1 derajat bujur terus berubah menurut lintang
- Contoh Swift menggunakan bentuk yang menghitung jari-jari bumi menurut lintang, lalu memperoleh
CLLocationCoordinate2D baru dari jarak dan azimut
1 komentar
Opini Hacker News
Meter didefinisikan ulang pada 1791 sebagai sepersepuluh juta dari kuadran meridian yang melewati Paris, yaitu panjang busur 90 derajat
Jadi 1° ≡ 1/90 × 10^7 m = 111.111,111... m, dan keliling Bumi juga kira-kira 40 juta m, atau 40.000 km
Definisi awal meter adalah pendulum detik, yaitu panjang pendulum dengan periode 2 detik; jika memasukkan T = 2, L = 1 ke T ≈ 2π√(L/g), maka 1 = π√(1/g), 1 = π²/g
Karena itu g yang mendekati π² juga bukan sekadar kebetulan, dan 1 cm³ air sama dengan 1 g juga karena itu lama menjadi definisi gram
Ketika meter didefinisikan lewat pendulum detik, ia sepenuhnya terikat pada definisi detik dan nilai g; ditulis sebagai rumus, 1 m = 1 s² × g / π²
g ≈ π² muncul secara alami, tetapi keliling Bumi yang cukup dekat dengan 40.000 km sehingga meter bisa didefinisikan ulang sebagai pangkat 10 tanpa perubahan besar tampak seperti kebetulan
https://en.wikipedia.org/wiki/Second#Fraction_of_solar_day
3 kaki Inggris hanya sekitar 0,91 m
Orang-orang saat itu bukan menurunkan satuan panjang yang paling prinsipil atau indah secara kosmis dari ruang hampa, melainkan lebih seperti mencoba mendefinisikan satuan yang sudah dipakai dengan cara selain “panjang batang yang ada di sana”
Alih-alih 360 derajat, gunakan 40.000 km, dan untuk perhitungan sebenarnya pakai jarak nyata, sementara nilai pendekatannya sudah cukup dekat
Dengan begitu, setidaknya bagi pengguna sistem metrik, tidak perlu konversi untuk mengubahnya menjadi jarak
Masalah dengan satuan derajat adalah sulit diubah menjadi jarak yang berguna; trik seperti ini memang membantu, tetapi sejak awal lebih baik tidak perlu konversi
Satu mil laut, sekitar 6076 ft, tepat setara dengan 1 menit busur di ekuator Bumi
Dari sudut pandang navigasi, saya berharap semua mil adalah mil laut
Mil laut punya makna nyata; 5280 ft itu sebenarnya bermakna apa?
Panjang chain adalah produk sampingan dari hukum pajak tanah Inggris yang memungut pajak berdasarkan acre
Mil Romawi adalah 1000 langkah, yaitu 5000 ft, jadi yang itu sedikit lebih masuk akal
https://en.wikipedia.org/wiki/Gunter%27s_chain
Mil Romawi aslinya adalah 5000 kaki Romawi
Sebenarnya 1 nmi ≡ 1,852 km didefinisikan secara persis
Dari definisi asli meter pun didapat 1/60 × 1/90 × 10^7 = 1851,85185185... m
Ciri utama SI dan pendahulunya, MKS serta CGS, adalah sejak awal adanya konvertibilitas antar-satuan, sehingga ada relasi seperti 1 m ≡ 1 s ≡ 1 kg ≡ 1 N ≡ 1 Pa ≡ 1 J ≡ 1 A ≡ 1 C ≡ 1 V ≡ 1 Ω ≡ 1 F ≡ 1 W ≡ 1 Wb ≡ 1 T ≡ 1 H ≡ 1 Hz
Di sini ≡ dipakai bukan sebagai ekuivalensi ketat, melainkan untuk secara longgar menunjuk faktor konversi
Yang agak mendekati pengecualian dalam SI adalah kelvin, mol, kandela, dan satuan turunannya; dua yang pertama bisa ditangani dengan rapi lewat konstanta Boltzmann dan konstanta Avogadro
Secara pribadi saya kurang senang kandela ada di SI
Namun pada tahun 1500-an, Inggris mengubah mil menjadi 8 furlong agar perhitungan pengukuran pertanian saat itu jauh lebih mudah
https://en.m.wikipedia.org/wiki/Furlong
Rasanya seperti argumen bahwa satuan adat lebih baik karena 10 tidak bisa dibagi 3 hanya dengan bilangan bulat
Jika lingkaran dibagi menjadi 360 busur, sepertinya satu busur itu dianggap punya makna tertentu pada jarak tertentu dari titik fokus
Namun mengingat sekitar 2000 tahun lalu Yunani mengadopsi penggunaan 360 dari Babilonia, dan Babilonia sendiri mencapai angka itu dengan menyempurnakan pengukuran kasar jumlah hari dalam setahun yang dipakai dalam astronomi selama 2000 tahun sebelumnya, makna mil laut lebih dekat ke makna turunan dan kebetulan daripada “nyata”
Selain itu, jika mempertimbangkan bahwa Bumi adalah sferoid pepat, panjang mil laut berubah bergantung pada lokasi
Saya sudah tinggal di AS lebih dari 10 tahun, tetapi masih belum terbiasa dengan sistem yard-pound, dan sepertinya akan tetap begitu
Sama sekali tidak masuk akal
Sistem metrik itu seperti emas murni: 1cm = 10mm, 1m = 100cm, 1km = 1000m, 1kg = 1000g, 1ton = 1000kg
Sistem yard-pound seperti bilang “tunggu sebentar”, lalu jadinya 1in = ???, 1ft = 12in, 1yd = 3ft, 1mile = 5280ft, 1lb = 16oz, dan semacamnya
Entah siapa yang menciptakan kegilaan seperti ini
Jadi masalahnya tidak sesering yang dibayangkan
Bahkan ketika kebetulan ditampilkan dalam sistem metrik, terlihat bahwa mereka tidak mengonversi satuannya
Misalnya menulis 1000mL alih-alih 1L, atau 3500g alih-alih 3.5kg
Orang Eropa bisa bilang “yang ini 600m, yang itu 1.2km”, tetapi orang Amerika hampir tidak pernah bilang “yang ini 800 yard, yang itu 1 mil”
Orang Eropa bisa bilang “saya harus membawa 4L air, jadi tasnya jadi 4kg lebih berat”
Orang Amerika mungkin bisa bilang “botol saya 24 ons cair, jadi kira-kira 24 ons berat”, tetapi kalau galon, kemungkinan besar mereka hanya akan bilang beratnya sekitar satu galon
Pada akhirnya, masalah konversi satuan tidak separah yang saya bayangkan, karena orang Amerika tidak berjalan-jalan sambil mengonversi satuan di setiap kalimat
Saya akan terkejut kalau lebih dari 50% populasi tahu ada berapa ons dalam satu cangkir air, atau satu mil itu berapa kaki
Untungnya, di AS pun komunitas ilmiah memakai sistem metrik sebagai standar
Chain yang berasal dari alat ukur survei panjangnya 22 yard
Satu chain juga sama dengan 4 rod, jadi satu rod menjadi 5½ yard, yang cukup aneh
10 chain adalah satu furlong, dan 8 furlong adalah 1 mil
Sebagai referensi, satu acre adalah 1 furlong × 1 chain
Meski terlihat gila, di dalamnya ada semacam sistem
Kenapa perlu mengonversi inci ke mil?
Dalam hidup, tidak ada kebutuhan untuk mengubah inci, atau kaki dan inci, menjadi mil
Untuk pertukangan kayu atau kerajinan tangan, mungkin masuk akal secara asal-usul, tetapi bagaimana untuk penggunaan lain?
Coba baca 2 3/16" pada penggaris yard-pound secepat membaca 5.6cm
Ukuran sekrup juga terkena dampaknya
Jarak yang ditempuh cahaya dalam 1 nanodetik juga kira-kira 1 kaki
Mengesankan :)
Hasil
$ units c ft/nsadalah* 0.983571061 kilochrono adalah 55 menit, dan cukup berguna dalam situasi seperti perjalanan luar angkasa ketika satuan tidak bisa bergantung pada hari Matahari
Kalau Bumi adalah sferoid pepat, bukankah panjang busur sebenarnya untuk 1 derajat lintang berubah?
Saya penasaran apakah “dapat diandalkan” hanya berarti “cukup dekat untuk dipakai”
Sepertinya saya sudah terlalu lama tidak mengerjakan hal yang berhubungan dengan geografi sampai lupa hal yang dulu saya tahu
Kasus penggunaan saya saat mengetahui fakta ini juga saya tulis sedikit di sini: https://twitter.com/mholt6/status/1695685022710477043
Kalaupun dalam kasus saya ada galat beberapa km, kemungkinan besar itu bukan di dekat wilayah kutub, dan kalau memang di kutub, cukup dianggap “oke, paham, kamu ada di titik kutub”
Orbit Bumi juga mirip
Di sekolah kita belajar bahwa bentuknya elips, tetapi hampir tidak mendapatkan rasa tentang bentuk sebenarnya, dan kebanyakan gambar memberi kesan yang benar-benar keliru
Meski begitu, untuk banyak tujuan praktis, ini cukup dekat
Tulisan ini juga memuat aturan praktis yang bagus bahwa 111,111 * cos(latitude) m adalah 1 derajat bujur
Saya suka koreksinya
Sebenarnya cukup memakai konstanta sederhana: 25° kira-kira 100,000m, 44° kira-kira 80,000m, 57° kira-kira 60,000m