Создайте Простые Карты Используя usamap

Этот пример показывает, как создать карты Соединенных Штатов с помощью функции usamap. Функция usamap позволяет вам сделать карты Соединенных Штатов в целом, только совпадающий фрагмент ("ниже 48" состояний), группы состояний или одного состояния. Осям карты, которые вы создаете с функцией usamap, соответствовали маркированной сетке вокруг области, которую вы задаете, но не содержит данных, позволяя вам сгенерировать вид карты, вы хотите использовать функции отображения, такие как функция geoshow.

Задайте пределы карты и настройте объект осей карты. Этот пример создает карту области Чесапикского залива.

latlim = [37 40];
lonlim = [-78 -74];
figure
ax = usamap(latlim, lonlim)
ax = 
  Axes with properties:

             XLim: [-1.8118e+05 1.8118e+05]
             YLim: [4.4299e+06 4.7720e+06]
           XScale: 'linear'
           YScale: 'linear'
    GridLineStyle: '-'
         Position: [0.1300 0.1100 0.7750 0.8150]
            Units: 'normalized'

  Show all properties

axis off

Определите проекцию карты, используемую функцией usamap. Ламберт Конформная Коническая проекция часто используется для карт совпадающих Соединенных Штатов.

getm(gca,'MapProjection')
ans = 
'lambert'

Используйте функцию shaperead, чтобы считать Американские Государственные контуры полигона из файла форм usastatehi. Функция возвращает данные в геоstruct.

states = shaperead('usastatehi',...
    'UseGeoCoords',true,'BoundingBox',[lonlim',latlim']);

Сделайте symbolspec, чтобы создать расклад политических сил с помощью функции polcmap.

faceColors = makesymbolspec('Polygon',...
    {'INDEX',[1 numel(states)],'FaceColor',polcmap(numel(states))});

Отобразите заполненные полигоны с функцией геопоказа.

geoshow(ax,states,'SymbolSpec',faceColors)

Извлеките имена для состояний в окне от геоstruct и используйте функцию textm, чтобы построить их в точках метки, обеспеченных геоstruct. Поскольку polcmap присваивает случайные пастельные цвета закрашенным фигурам, ваша карта может выглядеть по-другому, чем этот пример.

for k = 1:numel(states)
    labelPointIsWithinLimits = ...
        latlim(1) < states(k).LabelLat &&...
        latlim(2) > states(k).LabelLat &&...
        lonlim(1) < states(k).LabelLon &&...
        lonlim(2) > states(k).LabelLon;
    if labelPointIsWithinLimits
        textm(states(k).LabelLat,...
            states(k).LabelLon, states(k).Name,...
            'HorizontalAlignment','center')
    end
end
textm(38.2,-76.1,' Chesapeake Bay ',...
    'fontweight','bold','Rotation',270)