Создайте Простые Карты Используя 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)