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

В этом примере показано, как отобразить векторные карты как линии или закрашенные фигуры (заполненные многоугольники). Функции 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')

См. также

| |

Похожие темы