Отобразите векторные карты как линии или закрашенные фигуры

В этом примере показано, как отобразить векторные карты как линии или закрашенные фигуры (заполненный - в многоугольниках). Функции Mapping Toolbox позволяют вам отобразить данные о векторе закрашенной фигуры, которые используют NaNs, чтобы разделить закрытые области.

Используйте who команда, чтобы исследовать содержимое conus (совпадающие США), MAT-файл и затем загружают его в рабочую область. Векторные данные о карте для линий или многоугольников могут быть представлены простыми координатными массивами, геоструктурами или mapstructs. Переменные uslat и uslon вместе опишите три многоугольника (разделенный NaNs), самый большой из которых представляют схему совпадающих Соединенных Штатов. Два меньших многоугольника представляют Лонг-Айленд, Нью-Йорк, и виноградник Марты, остров от Массачусетса. Переменные gtlakelat и gtlakelon опишите три многоугольника (разделенный NaNs) для Великих озер. Переменные statelat и statelon содержите данные линейного сегмента (разделенный NaNs) для границ между состояниями, который не отформатирован для отображения закрашенной фигуры.

who -file conus.mat
Your variables are:

description  gtlakelon    statelat     uslat        
gtlakelat    source       statelon     uslon        
load conus

Проверьте, что данные о линии и многоугольнике содержат NaNs (следовательно несколько объектов).

find(isnan(gtlakelon))
ans = 3×1

         881
        1056
        1227

Считайте worldrivers файл форм для области, которая покрывает совпадающие Соединенные Штаты.

uslatlim = [min(uslat) max(uslat)]
uslatlim = 1×2

   25.1200   49.3800

uslonlim = [min(uslon) max(uslon)]
uslonlim = 1×2

 -124.7200  -66.9700

rivers = shaperead('worldrivers', 'UseGeoCoords', true, ...
    'BoundingBox', [uslonlim', uslatlim'])
rivers=23×5 struct
    Geometry
    BoundingBox
    Lon
    Lat
    Name

Обратите внимание на то, что Geometry поле задает, хранятся ли данные как Point , MultiPoint строка , или Polygon .

rivers(1).Geometry
ans = 
'Line'

Настройте карту оси, чтобы отобразить координаты состояния, включив систему координат карты, сетку карты, и меридиан и параллельные метки.. Когда конические проекции подходят для отображения целых Соединенных Штатов, создают объект осей карты с помощью конической проекции равной области Алберса ('eqaconic' ). Определение пределов карты, которые содержат необходимую область автоматически, сосредотачивает проекцию на соответствующей долготе. Система координат заключает только область отображения, не целый земной шар. Как правило необходимо задать пределы карты, которые расширяют немного вне сферы интересов (worldmap и usamap сделайте это для вас). Для конических проекций нужны две стандартных параллели (широты, в которых искажение шкалы является нулем). Хорошее правило состоит в том, чтобы установить стандартные параллели в одной шестой пути от обоих экстремальных значений широты. Или, чтобы использовать широты по умолчанию в стандартных параллелях, просто обеспечьте пустую матрицу в вызове axesm .

figure
axesm('MapProjection', 'eqaconic', 'MapParallels', [], ...
      'MapLatLimit', uslatlim + [-2 2], ...
      'MapLonLimit', uslonlim + [-2 2])
axis off; 
framem; 
gridm; 
mlabel; 
plabel

Постройте закрашенную фигуру, чтобы отобразить область, занятую совпадающими Соединенными Штатами. Используйте geoshow функция с DisplayType установите на 'polygon' . Обратите внимание на то, что порядок, в котором добавляют слои в карту, может влиять на видимость, потому что некоторые слои могут скрыть другие слои. Например, потому что некоторые Американские Государственные контуры следуют за крупнейшими реками, отображают реки в последний раз, чтобы не затенять их.

geoshow(uslat,uslon, 'DisplayType','polygon','FaceColor',...
    [1 .5 .3], 'EdgeColor','none')

Постройте Великие озера сверх контактной площадки, с помощью geoshow .

geoshow(gtlakelat,gtlakelon, 'DisplayType','polygon',...
    'FaceColor','cyan', 'EdgeColor','none')

Отобразите на графике данные о линейном сегменте, показывающие государственные границы, с помощью geoshow с DisplayType установите на 'line' .

geoshow(statelat,statelon,'DisplayType','line','Color','k')

Используйте geoshow построить речную сеть. Обратите внимание на то, что можно не использовать DisplayType

geoshow(rivers, 'Color', 'blue')