В этом примере показано, как отобразить векторные карты как линии или закрашенные фигуры (заполненные многоугольники). Функции Mapping Toolbox позволяют вам отображать закрашенную фигуру данные векторы, которые используют NaNs для разделения закрытых областей.
Используйте who
команда для исследования содержимого conus
(conterminous U.S.) 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
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'
Настройте оси карты, чтобы отобразить координаты состояния, включив систему координат карты, сетку карты, а также метки меридиана и параллели. Поскольку конические проекции подходят для отображения всех Соединенных Штатов, создайте объект осей с помощью конической проекции Albers с равной площадью ('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')