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

Этот пример показывает, как отобразить векторные карты как строки или закрашенные фигуры (заполненный - в полигонах). Функции 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 = 23x1 struct array with fields:
    Geometry
    BoundingBox
    Lon
    Lat
    Name

Обратите внимание на то, что поле Geometry задает, хранятся ли данные как Point, MultiPoint, Line или 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')