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 градусов и в полюсах. Вводы и выводы в градусах.

[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 

Советы

Топология многоугольника для входных векторов должна быть допустимой. Это означает, что вершины для внешних звонков (основной многоугольник или “островные” многоугольники) должны быть в по часовой стрелке порядке, и любые внутренние звонки (“озера”) должны запуститься в против часовой стрелки порядке для функции, чтобы работать правильно. Можно использовать ispolycw функционируйте, чтобы проверять действительно ли ваш latlon векторы соответствуют этому критерию и poly2cw и poly2ccw функции, чтобы откорректировать любой, что запуск в неправильном направлении.

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

| | |

Представлено до R2006a