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 файл формы. Функция возвращает данные в геострукте.
states = shaperead('usastatehi',... 'UseGeoCoords',true,'BoundingBox',[lonlim',latlim']);
Создайте символ, чтобы создать политическую карту с помощью polcmap функция.
faceColors = makesymbolspec('Polygon',... {'INDEX',[1 numel(states)],'FaceColor',polcmap(numel(states))});
Отображение заполненных многоугольников с помощью функции геоскопии.
geoshow(ax,states,'SymbolSpec',faceColors)
Извлеките имена состояний в окне из геострукта и используйте 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)
