Anda harus memecah polyline di meridian + -180 derajat. Ini membutuhkan penemuan garis lintang di mana polyline melintasi meridian itu. GIS Anda mungkin memiliki metode untuk melakukan pemecahan. Jika tidak, solusi sederhana dapat diturunkan dari kode yang ditampilkan di utas terkait . Berikut ini beberapa detailnya.
Polyline direpresentasikan sebagai urutan simpul , masing-masing diberikan dalam bentuk (lat, lon), dengan -180 <= lon <= 180. Anda perlu memeriksa setiap pasangan berturut-turut untuk melihat apakah itu melintasi meridian + -180. Ada tes cepat: jika nilai absolut dari perbedaan bujur adalah 180 atau lebih besar, ada persimpangan.
Di dalam setiap segmen (lat0, lon0) -> (lat1, lon1) yang melintasi meridian + -180, Anda harus memecah polyline menjadi dua bagian di mana ia bersilangan.
Kuncinya adalah menemukan garis lintang break point dengan akurasi yang masuk akal. Ini paling mudah dilakukan dengan model bumi bulat: kesalahan (dibandingkan dengan model ellipsoidal yang lebih akurat) akan terlalu kecil untuk diperhatikan.
Biarkan segmen yang dimaksud beralih dari titik 0 di (lat0, l0) ke titik 1 di (lat1, lon1). Break point dapat ditemukan dengan menjalankan segmen garis lurus dalam 3D antara dua titik sebagaimana diwakili dalam koordinat Cartesian dan menemukan di mana koordinat y adalah nol. The koordinat Cartesian adalah
(x0, y0, z0) = (cos(lon0)*sin(lat0), sin(lon0)*sin(lat0), cos(lat0))
dan pemberian ekspresi yang serupa (x1, y1, z1) untuk poin 1. Memecahkan persamaan
t * y0 + (1-t) * y1 = 0
untuk t; itu adalah,
t = y1 / (y1 - y0).
Koordinat persimpangan karena itu
(x, y, z) = (t * x0 + (1-t) * x1, 0, t * z0 + (1-t) * z1)
Titik ini (yang terletak di bawah permukaan bumi di suatu tempat di bawah + -180 meridian) memiliki garis lintang sama dengan
lat2 = ATan(z/x).
Break point perlu diwakili dalam dua cara. Ketika melampirkannya setelah (lat0, lon0) untuk mengakhiri bagian pertama dari polyline yang rusak, gunakan (lat2, -180) jika lon0 negatif dan sebaliknya gunakan (lat2, 180). Saat melampirkannya sebelumnya (lat1, lon1) untuk memulai bagian kedua dari polyline yang rusak, ikuti aturan yang sama.
Dalam kasus luar biasa, satu atau keduanya dari titik 0 dan titik 1 mungkin berada di + -180 meridian. Mengikuti prosedur ini akan menyebabkan Anda menempatkan segmen panjang nol di salah satu potongan polyline yang Anda buat. Jika ini dapat menyebabkan masalah dengan SIG, uji untuk kondisi ini.
Perhatikan bahwa polyline dapat melewati meridian ini lebih dari sekali. Karena itu, setelah menemukan istirahat pertama dan memecah polyline menjadi dua bagian, Anda perlu memproses bagian kedua dengan cara yang sama.