В этом примере показано, как удалить разрывы координат долготы при пересечениях линий даты, что может привести к путанице при выполнении заданных операций с многоугольниками. Это может произойти, когда точки с долготой около 180 градусов соединяются с точками с долготой около -180 градусов, как это может быть для восточной Сибири и Антарктиды, а также для небольших кругов и других объектов пятен. Подготовка географических данных для использования с polybool или для отрисовки фрагмента вырезать полигоны в строке даты с помощью flatearthpoly функция. flatearthpoly возвращает многоугольник с точками, вставленными для следования по линии даты вверх к полюсу, пересечения долгот на полюсе и возврата к линии даты, пересекающейся вдоль другого края линии даты.
Примечание.Отображение функций панели инструментов позволяет автоматически вырезать и обрезать географические данные, если это требуется проекцией карты. Использовать flatearthpoly только при выполнении заданных операций над многоугольниками.
Создайте ортогональный вид Земли и постройте на нем график береговых линий.
axesm ortho setm(gca,'Origin', [60 170]); framem on; gridm on load coastlines plotm(coastlat,coastlon)

Создайте небольшой круг, который охватывает Северный полюс и окрашивают его в желтый цвет.
[latc,lonc] = scircle1(75,45,30);
patchm(latc,lonc,'y')
Выровнять малый круг с помощью flatearthpoly функция.
[latf,lonf] = flatearthpoly(latc,lonc);
Постройте график только что созданной окружности выреза в виде пурпурной линии.
plotm(latf,lonf,'m')
Создайте вторую маленькую окружность, не включающую полюс.
[latc1 lonc1] = scircle1(20, 170, 30);
Выровняйте круг и постройте его красной линией. Обратите внимание, что второй маленький круг, который не покрывает столб, разрезан на две части вдоль строки даты. Многоугольник для первого малого круга отображается в плоскостных координатах для иллюстрации его распрямленной формы. flatearthpoly функция предполагает, что внутренняя часть распрямляемого многоугольника находится в полусфере, которая содержит большинство точек его кромки. Таким образом, многоугольник, полученный flatearthpoly не охватывает более полусферы.
[latf1,lonf1] = flatearthpoly(latc1,lonc1);
plotm(latf1,lonf1,'r')
flatearthpoly | ispolycw | poly2ccw | poly2cw