flatearthpoly

Отсеките многоугольник к мировым пределам

Синтаксис

[latf,lonf] = flatearthpoly(lat,lon)
[latf,lonf] = flatearthpoly(lat,lon,longitudeOrigin)

Описание

[latf,lonf] = flatearthpoly(lat,lon) обрезки NaN- разделенные многоугольники заданы векторами широты и долготы lat и lon к пределам [-180 180] в долготе и [-90 90] в широте, вставляя прямые сегменты вперед +/-меридианы на 180 градусов и в полюсах. Вводы и выводы в градусах.

Отобразите функции автоматически сокращение и обрежьте географические данные при необходимости проекцией карты. Используйте flatearthpoly функционируйте только при выполнении операций присвоения на многоугольниках.

[latf,lonf] = flatearthpoly(lat,lon,longitudeOrigin) сосредотачивает пределы долготы на долготе, заданной скалярной долготой longitudeOrigin.

Примеры

свернуть все

Векторные данные для географических объектов, которые охватывают полюс, должны столкнуться или пересечь линию перемены даты. В то время как тулбокс правильно отображает такие многоугольники, они могут вызвать проблемы для функций как пересечение многоугольника и Логические операции, которые работают с Декартовыми координатами. Когда эти многоугольники обработаны как Декартовы координаты, результаты пересечения линии перемены даты в побочном линейном сегменте и многоугольник, отображенный, когда закрашенной фигуре не заполнили внутреннюю часть правильно.

antarctica = shaperead('landareas', 'UseGeoCoords', true,...
    'Selector', {@(name) strcmp(name,'Antarctica'), 'Name'});
figure
plot(antarctica.Lon, antarctica.Lat)
ylim([-100 -60])

Многоугольники могут быть переформатированы более соответственно для Декартовых координат с помощью flatearthpoly функция. Результат напоминает отображение карты на цилиндрической проекции. Многоугольник соответствует линии перемены даты, раскрывается к полюсу, развертывается через долготы в полюсе и следует за линией перемены даты до другой стороны пересечения линии перемены даты.

[latf, lonf] = flatearthpoly(antarctica.Lat', antarctica.Lon');
figure; mapshow(lonf, latf, 'DisplayType', 'polygon')
ylim([-100 -60])
xlim([-200 200])
axis square 

Разрывы координаты долготы в Антимеридиане могут перепутать операции присвоения на многоугольниках. Подготовить географические данные к использованию с polybool или для рендеринга закрашенной фигуры, сокращения многоугольники в Антимеридиане с flatearthpoly функция. flatearthpoly функция возвращает многоугольник с точками, вставленными, чтобы следовать за Антимеридианом до полюса, пересечь долготы в полюсе и возвратиться к Антимеридиану вдоль другого ребра Антимеридиана.

Создайте ортогональное представление Земли и постройте береговые линии на ней.

axesm ortho
setm(gca,'Origin', [60 170]); framem on; gridm on
load coastlines
plotm(coastlat,coastlon)

Figure contains an axes object. The axes object contains 4 objects of type patch, line.

Сгенерируйте маленький круг, который охватывает Северный полюс, и окрасьте его в желтый.

[latc,lonc] = scircle1(75,45,30);
patchm(latc,lonc,'y')

Figure contains an axes object. The axes object contains 5 objects of type patch, line.

Сгладьте маленький круг с помощью flatearthpoly функция.

[latf,lonf] = flatearthpoly(latc,lonc);

Постройте круг сокращения, который вы только сгенерировали как пурпурная линия.

plotm(latf,lonf,'m')

Figure contains an axes object. The axes object contains 6 objects of type patch, line.

Сгенерируйте второй маленький круг, который не включает полюс.

[latc1, lonc1] = scircle1(20, 170, 30);

Сгладьте круг и постройте его как красную линию. Обратите внимание на то, что второй маленький круг, который не покрывает полюс, отсекается в две части вдоль Антимеридиана. Многоугольник для первого маленького круга построен в координатах на плоскости, чтобы проиллюстрировать его сглаженную форму. flatearthpoly функция принимает, что внутренняя часть сглаженного многоугольника находится в полушарии, которое содержит большинство его точек ребра. Таким образом многоугольник производится flatearthpoly не покрывает больше, чем полушарие.

[latf1,lonf1] = flatearthpoly(latc1,lonc1);
plotm(latf1,lonf1,'r')

Figure contains an axes object. The axes object contains 7 objects of type patch, line.

Советы

Многоугольник задан lat и lon должно быть правильно построено:

  • Контуры не должны пересекаться.

  • Вершины внешних границ должны быть в по часовой стрелке, порядок и вершины внутренних границ должны быть в против часовой стрелки порядок, такой, что внутренняя часть многоугольника всегда справа от контура.

Для получения дополнительной информации смотрите, Создают и Многоугольники Отображения.

Смотрите также

| | |

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте