Создайте простые карты с помощью usamap

В этом примере показано, как создать карты США с помощью usamap функция. The 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 функция. Проекция Lambert Conformal Conic часто используется для карт контерминозных Соединенных Штатов.

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

Используйте shaperead функция для чтения контуров многоугольников в состояниях из usastatehi shapefile. Функция возвращает данные в гео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 функция для построения графиков в точках меток, обеспечиваемых геоструктом. Потому что 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)

Для просмотра документации необходимо авторизоваться на сайте