Bạn cần phá vỡ đa tuyến ở kinh tuyến + -180 độ. Điều này đòi hỏi phải tìm vĩ độ mà tại đó đa tuyến đi qua kinh tuyến đó. GIS của bạn có thể có phương pháp để phá vỡ. Nếu không, một giải pháp đơn giản có thể được lấy từ mã được hiển thị trong một chủ đề liên quan . Dưới đây là một số chi tiết.
Một đa tuyến được biểu diễn dưới dạng một chuỗi các đỉnh , mỗi đỉnh được cho ở dạng (lat, lon), với -180 <= lon <= 180. Bạn cần kiểm tra từng cặp liên tiếp để xem liệu nó có vượt qua kinh tuyến + -180 hay không. Có một thử nghiệm nhanh: nếu giá trị tuyệt đối của chênh lệch kinh độ là 180 hoặc lớn hơn, có một giao cắt.
Trong mỗi phân đoạn (lat0, lon0) -> (lat1, lon1) đi qua kinh tuyến + -180, bạn cần chia đa tuyến thành hai phần mà nó giao nhau.
Điều quan trọng là tìm vĩ độ của điểm dừng với độ chính xác hợp lý. Điều này được thực hiện dễ dàng nhất với mô hình trái đất hình cầu: lỗi (so với mô hình elip chính xác hơn) sẽ quá nhỏ để nhận thấy.
Đặt đoạn trong câu hỏi đi từ điểm 0 tại (lat0, lon0) đến điểm 1 tại (lat1, lon1). Điểm dừng có thể được tìm thấy bằng cách chạy một đoạn thẳng trong 3D giữa hai điểm như được biểu thị trong tọa độ Cartesian và tìm vị trí tọa độ y bằng không. Các tọa độ Descartes là
(x0, y0, z0) = (cos(lon0)*sin(lat0), sin(lon0)*sin(lat0), cos(lat0))
và một biểu thức tương tự cho (x1, y1, z1) cho điểm 1. Giải phương trình
t * y0 + (1-t) * y1 = 0
cho t; đó là,
t = y1 / (y1 - y0).
Các tọa độ của giao lộ là do đó
(x, y, z) = (t * x0 + (1-t) * x1, 0, t * z0 + (1-t) * z1)
Điểm này (nằm dưới bề mặt trái đất ở đâu đó bên dưới kinh tuyến + -180) có vĩ độ bằng
lat2 = ATan(z/x).
Điểm phá vỡ cần được thể hiện theo hai cách. Khi gắn nó sau (lat0, lon0) để chấm dứt phần đầu tiên của polyline bị hỏng, hãy sử dụng (lat2, -180) nếu lon0 âm và sử dụng (lat2, 180). Khi gắn nó trước (lat1, lon1) để bắt đầu phần thứ hai của polyline bị hỏng, hãy làm theo quy tắc tương tự.
Trong trường hợp ngoại lệ, một hoặc cả hai điểm 0 và điểm 1 có thể nằm trên kinh tuyến + -180. Làm theo quy trình này sẽ khiến bạn đặt một đoạn có độ dài bằng không vào một trong những phần đa tuyến bạn tạo. Nếu điều này có thể gây ra sự cố với GIS, hãy kiểm tra tình trạng này.
Lưu ý rằng một đa tuyến có thể vượt qua kinh tuyến này nhiều lần. Do đó, sau khi tìm được ngắt đầu tiên và chia polyline thành hai phần, bạn cần xử lý phần thứ hai theo cùng một cách.