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)