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