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

Отображение простого многоугольника с одной областью без отверстий. Сначала перечислите его вершины в порядке по часовой стрелке. Замкните многоугольник, повторив первую вершину в конце списка.
x1 = [0 3 4 1 0]; y1 = [0 1 3 2 0];
Отображение вершин в виде многоугольника с помощью mapshow функция путем указания 'DisplayType' как 'polygon'.
mapshow(x1,y1,'DisplayType','polygon')

Определение многоугольников с несколькими областями или отверстиями путем разделения границ на NaN значения. Перечислите вершины внешних границ в порядке по часовой стрелке и вершины внутренних границ в порядке против часовой стрелки.
x2 = [0 1 8 6 0 NaN 1 4 2 1 NaN 5 6 7 3 5]; y2 = [0 6 8 2 0 NaN 1 3 5 1 NaN 3 5 7 6 3];
Эти векторы определяют многоугольник с одной внешней границей и двумя внутренними границами. Границы разделяются с помощью NaN значения. Проверьте порядок вершин границ с помощью команды ispolycw функция. ispolycw функция возвращает 1, если вершины расположены в порядке по часовой стрелке.
ispolycw(x2,y2)
ans = 1x3 logical array
1 0 0
Отображение многоугольника. Внутренние границы создают отверстия внутри многоугольника.
figure mapshow(x2,y2,'DisplayType','polygon')

Теперь перечислите вершины многоугольника с двумя непересекающимися областями. В одном из регионов есть отверстие. Проверьте порядок вершин границ с помощью ispolycw.
x3 = [0 1 5 6 0 NaN 1 5 4 2 1 NaN 7 6 8 8 7]; y3 = [0 6 7 2 0 NaN 1 3 6 5 1 NaN 4 7 8 7 4]; ispolycw(x3,y3)
ans = 1x3 logical array
1 0 1
Отображение многоугольника. Внешние границы создают две непересекающиеся области, а внутренняя граница создает отверстие.
figure mapshow(x3,y3,'DisplayType','polygon')

Как правило, географические координаты можно использовать при определении многоугольников над небольшими областями и при вызове таких функций, как ispolycw. Это верно, за исключением случаев, когда многоугольник оборачивает полюс или пересекает Антимеридиан.
Например, отображение штата Мичиган на карте с использованием многоугольников с географическими координатами. Сначала прочтите вершины границ состояний.
states = shaperead('usastatehi','UseGeoCoords',true); michigan = states(22); lat = michigan.Lat; lon = michigan.Lon;
Подсчитайте границы и проверьте порядок их вершин. Использовать ispolycw с географическими координатами перечислите вектор долготы в качестве первого аргумента и вектор широты в качестве второго аргумента. Выходной массив 1 на 6 означает, что имеется шесть границ. Каждый элемент массива равен 1, что означает, что каждая граница является внешней границей собственной области.
ispolycw(lon,lat)
ans = 1x6 logical array
1 1 1 1 1 1
Отображение многоугольника на карте с помощью geoshow функция, указание 'DisplayType' как 'polygon'.
usamap 'Michigan' geoshow(lat,lon,'DisplayType','polygon')

Подрезать многоугольник к пределам широты и долготы национального парка Айл-Рояль с помощью maptrimp функция. Отображение отсеченного многоугольника на новой карте.
latlim = [47.8 48.2]; lonlim = [-89.3 -88.4]; [latT,lonT] = maptrimp(lat,lon,latlim,lonlim); figure usamap(latlim,lonlim) geoshow(latT,lonT,'DisplayType','polygon')

При отображении многоугольника на Земле граница делит Землю на две области. Обе эти области имеют конечную площадь, поэтому любая из них может быть внутренней областью многоугольника.

В результате при проецировании вершин многоугольника на карту с помощью geoshow функция, заполненная область может отличаться от ожидаемой. Изменение области заполнения путем изменения порядка вершин на противоположный.
Например, можно отобразить небольшой многоугольник на карте мира.
lat2 = [0 10 40 30 0]; lon2 = [0 20 30 10 0]; figure worldmap('world') geoshow(lat2,lon2,'DisplayType','polygon')

Внешняя область многоугольника заполнена. Измените порядок вершин, применив flip функция для векторов координат. Затем снова отобразите полигон.
lat2f = flip(lat2); lon2f = flip(lon2); figure worldmap('world') geoshow(lat2f,lon2f,'DisplayType','polygon')

Вместо этого заполняется внутренняя область многоугольника.