Saya memiliki satu set koordinat di lon / lat. Selalu ada setidaknya 3 koordinat yang disusun yang membentuk poli (jika mereka diproyeksikan datar). Bagaimana saya bisa menghitung batas minimum untuk koordinat ini sebagai satu set garis bujur dan lintang yang valid? (dengan 'valid' yang saya maksud adalah rentang yang secara eksplisit menjelaskan antimeridian). Agak sulit untuk menjelaskan apa yang saya cari jadi saya punya gambar.
Kasus dalam gambar ini sepele; Anda hanya menemukan minimum absolut dan maksimum untuk semua poin. Ini tidak bekerja untuk semua kasus. Apakah ada solusi generik?
Sunting: Untuk mengklarifikasi apa yang saya maksud dengan 'valid', katakan saya memiliki tiga nilai bujur dalam kumpulan data saya: -76, -135 dan 164. Nilai melintasi antimeridian dan saya ingin rentang hasil yang akan dipisah: -76 ke -180 DAN 164 hingga 180.
Beberapa klarifikasi lagi. Poin membentuk poligon, jadi dalam kasus tertentu, rentang yang diperlukan bisa dari -180 hingga +180 (yaitu, 360 derajat penuh):
Gambar di sebelah kiri menunjukkan garis bujur empat koordinat yang terjadi pada satu 'setengah' Bumi. Bayangkan seolah-olah Anda sedang melihat ke bawah ke kutub utara (titik hitam). Warna merah muda menunjukkan rentang longitudinal minimum yang mencakup poligon (poligon ditampilkan di antara empat titik berwarna ungu). Kasing di sebelah kiri akan memiliki dua rentang memanjang: [-180 hingga -120] dan [135 hingga 180] (hanya memperkirakannya secara visual)
Gambar di sebelah kanan menunjukkan kasus lain di mana titik-titiknya berputar di sekitar Bumi. Kisaran ini adalah [-180 hingga 180].
sumber
Jawaban:
Semoga saya mengerti pertanyaan dengan benar ...
Kita dapat memecahkan masalah garis bujur dan garis lintang secara terpisah, jadi saya akan mengambil contoh Anda dengan garis bujur: -76, -135 dan 164.
Pertama saya akan memesannya:
Maka saya akan menambahkan koordinat paling kiri ke kanan lagi: -135 + 360 = 225
Sekarang kita dapat menghitung jarak antar koordinat:
Kesenjangan terbesar (240) harus menjadi batas kotak batas minimum, bagian yang bukan milik kotak. Garis putus-putus adalah bagian terbesar dari lingkaran yang bisa kita keluarkan. Dalam contoh kami itu berarti, kotak batas dimulai dengan 164, termasuk -135 dan berakhir dengan -76.
sumber
Ini sangat mudah dilakukan dalam Javascript dengan Google Maps API. Inilah cara Anda melakukannya dari sisi klien dengan API itu:
sumber
Saya pikir saya mungkin telah menemukan cara untuk melakukan ini. Implementasi awal saya berfungsi, tetapi saya tidak yakin apakah ada kasus tepi yang saya lewatkan. Jika ada yang salah dengan solusi ini, harap tunjukkan.
Mengingat bahwa saya khawatir dengan mendapatkan rentang lon / lat untuk poligon daripada hanya titik-titik yang menyusunnya, salah satu cara untuk mencoba masalahnya adalah dengan benar-benar 'berjalan' di sepanjang set koordinat yang dipesan dari awal hingga selesai. Anda melacak seberapa jauh searah jarum jam dan berlawanan arah jarum jam yang telah Anda lalui relatif terhadap pusat Bumi yang diberi titik awal dan terus berjalan sampai Anda menyelesaikan poligon:
Anda bisa mendapatkan kisaran seberapa jauh CW dan CCW Anda bepergian dari titik awal Anda ... ini memberi Anda informasi yang cukup untuk mendapatkan batas yang benar dalam kasus normal (kiri di gambar). Dalam kasus di mana poligon berjalan penuh di sekitar atau memotong di tengah, sudut perjalanan kembali akan 360 derajat.
Metode ini juga berfungsi ketika Anda memiliki poligon 'memeluk' permukaan bumi daripada memotongnya. Jadi jika Anda memiliki poligon yang menunjukkan seseorang bepergian di permukaan bumi dari Toronto (lon: -79) ke London (lon: -5) ke Tokyo (lon: 139) dan kembali (dalam urutan yang sama), Anda akan dapatkan kisaran [-79 hingga 139].
Jika poligon memotong bagian tengah (bayangkan dua titik yang berdekatan pada +90 dan -90), saya menganggap ini sebagai sapuan penuh (360 derajat) meskipun Anda dapat memilih salah satu cara.
sumber