Saya ingin menemukan titik lintang dan bujur yang diberi bantalan, jarak, dan garis lintang dan bujur yang mulai.
Ini tampaknya kebalikan dari pertanyaan ini ( Jarak antara titik lat / panjang ).
Saya telah melihat formula haversine dan berpikir bahwa perkiraan dunia mungkin cukup dekat.
Saya berasumsi bahwa saya perlu menyelesaikan rumus haversine untuk lat / long saya yang tidak diketahui, apakah ini benar? Adakah situs web bagus yang membicarakan hal semacam ini? Sepertinya itu akan umum, tetapi googling saya hanya memunculkan pertanyaan yang mirip dengan yang di atas.
Apa yang sebenarnya saya cari hanyalah formula untuk ini. Saya ingin memberikannya lat awal / lng, bantalan, dan jarak (mil atau kilometer) dan saya ingin keluar dari pasangan lat / lng yang mewakili di mana seseorang akan berakhir jika mereka bepergian bersama rute itu.
sumber
Jawaban:
Saya ingin tahu bagaimana hasil dari formula ini dibandingkan dengan Esri's pe.dll .
( kutipan ).
Inilah halaman html untuk pengujian .
sumber
Jika Anda berada di pesawat, maka titik yang r meter dengan arah dari suatu derajat timur utara digantikan oleh r * cos (a) dalam arah utara dan r * sin (a) dalam arah timur. (Pernyataan ini kurang lebih mendefinisikan sinus dan cosinus.)
Meskipun Anda tidak berada di dalam pesawat - Anda sedang bekerja di permukaan ellipsoid yang melengkung yang memodelkan permukaan bumi - jarak apa pun yang kurang dari beberapa ratus kilometer mencakup bagian kecil dari permukaan sehingga untuk tujuan praktis dapat dilakukan dianggap datar. Satu-satunya komplikasi yang tersisa adalah bahwa satu derajat garis bujur tidak mencakup jarak yang sama dengan tingkat garis lintang. Dalam model Bumi berbentuk bola, satu derajat garis bujur hanya cos (garis lintang) sepanjang satu derajat garis lintang. (Dalam model ellipsoidal, ini masih merupakan perkiraan yang sangat baik, bagus hingga sekitar 2,5 angka signifikan.)
Akhirnya, satu derajat garis lintang adalah sekitar 10 ^ 7/90 = 111.111 meter. Kami sekarang memiliki semua informasi yang diperlukan untuk mengonversi meter ke derajat:
Perpindahan ke utara adalah r * cos (a) / 111111 derajat;
Perpindahan ke timur adalah r * sin (a) / cos (lintang) / 111111 derajat.
Sebagai contoh, pada garis lintang -0.31399 derajat dan arah a = 30 derajat timur utara, kita dapat menghitung
Di mana, mulai dari (-78.4437, -0.31399), lokasi baru berada di (-78.4437 + 0.00045, -0.31399 + 0.0007794) = (-78.4432, -0.313211).
Jawaban yang lebih akurat, dalam sistem referensi ITRF00 modern, adalah (-78.4433, -0.313207): ini adalah 0,43 meter dari perkiraan jawaban, menunjukkan perkiraan keliru sebesar 0,43% dalam kasus ini. Untuk mencapai akurasi yang lebih tinggi, Anda harus menggunakan formula jarak ellipsoidal (yang jauh lebih rumit) atau proyeksi konformitas kesetiaan tinggi dengan divergensi nol (sehingga bantalannya benar).
sumber
Jika Anda memerlukan solusi JavaScript, pertimbangkan ini
functions
dan biola ini :Jadi, jika Anda ingin menghitung koordinat baru, bisa seperti ini:
sumber
Saya mendapatkan ini berfungsi di ObjectiveC. Kuncinya di sini adalah mengetahui bahwa Anda memerlukan titik lat / lng di radian dan Anda perlu mengubahnya kembali ke lat / lng setelah menerapkan persamaan. Juga, ketahuilah bahwa jarak dan tc ada dalam radian.
Inilah persamaan aslinya:
Ini diimplementasikan dalam ObjC di mana radian adalah radian yang diukur berlawanan arah jarum jam dari N (misalnya PI / 2 adalah W, PI adalah S, 2 PI / 3 adalah E) dan jarak adalah dalam kilometer.
sumber
Jika Anda tertarik pada akurasi yang lebih baik, ada Vincenty . (Tautan ke bentuk 'langsung', yang persis seperti yang Anda cari).
Ada beberapa implementasi yang ada, jika Anda mencari kode.
Juga, sebuah pertanyaan: Anda tidak berasumsi bahwa pelancong mempertahankan hal yang sama untuk seluruh perjalanan, bukan? Jika demikian, maka metode ini tidak menjawab pertanyaan yang tepat. (Anda akan lebih baik memproyeksikan ke mercator, menggambar garis lurus, lalu tidak memproyeksikan hasilnya.)
sumber
Berikut ini adalah solusi Python:
sumber
Saya menggunakan pendekatan yang dijelaskan di bawah ini dalam menentukan koordinat berikutnya mengingat arah dan jarak dari koordinat sebelumnya. Saya memiliki masalah pada akurasi dengan pendekatan lain yang saya baca dari internet.
Saya menggunakan ini dalam menentukan luas tanah, yang merupakan poligon, dan plot poligon itu di google earth. Judul tanah memiliki bantalan dan jarak yang ditulis dengan cara ini: "NorthOrSouth x derajat y menit EastOrWest, z meter ke titik n;".
Jadi, mulai dari koordinat titik referensi yang diberikan, pertama-tama saya menghitung jarak per satu derajat lintang dan satu derajat bujur menggunakan rumus haversine karena ini bervariasi tergantung pada lokasi. Lalu saya menentukan koordinat berikutnya dari rumus trigonometri sinus dan kosinus.
Di bawah ini adalah javascript:
sumber