Переключение между проекциями

Как только объект осей был создан с axesm, отображаются ли данные карты или нет, возможно изменить текущую проекцию, а также многие ее параметры. Можно использовать setm или maptool UI для сброса проекции. Остальная часть этого раздела описывает факторы и параметры, связанные с переключением проекций в осях карты. Дополнительные детали приведены для этого с geoshow функция в проекциях Change Map Использование геопоказа.

Когда вы переключаетесь с одной проекции на другую, setm очищает настройки, которые были специфичны для более ранней проекции, обновляет систему координат карты и гратикулу, и обычно сохраняет карту, охватывающую ту же часть мира - даже при переключении между азимутальными и неазимутальными проекциями. Но в некоторых случаях, возможно, вам потребуется дополнительно настроить свойства осей карты, чтобы достичь правильного внешнего вида. Настройки, подходящие для одной проекции, могут не подходить для другой. Чаще всего нужно будет обновить позиционирование меридиана и параллельных меток.

Изменение проекций с обновлением меток меридианов и параллелей

В этом примере показано, как изменить проекцию карты и обновить метки меридиана и параллели.

Создайте проекцию Меркатора с меридиональными и параллельными метками.

axesm mercator
framem on; gridm on; mlabel on; plabel on
setm(gca,'LabelFormat','signed')
axis off

Получите карту по умолчанию и пределы широты системы координат для проекции Mercator. Обратите внимание, что пределы широты системы координат и карты заданы в 86 степенях на север и юг для проекции Меркатора, чтобы сохранить безопасное расстояние от особенности на полюсах.

[getm(gca,'MapLatLimit'); getm(gca,'FLatLimit')]
ans = 2×2

   -86    86
   -86    86

Переключите проекцию на ортогональный азимутал.

setm(gca,'MapProjection','ortho')

Задайте новые местоположения для меток меридиана и параллельных меток.

setm(gca,'MLabelParallel',0,'PLabelMeridian',-90, ...
   'PLabelMeridian',-30)

Изменение пределов системы координат при сбросе проекции

Этот пример показов, как переключиться с одной проекции на другую и сбросить пределы источника и системы координат, особенно при отображении небольшого фрагмента Земли.

Создайте пустые оси карты для области Соединенных Штатов в проекции Lambert Conformal Conic (проекция по умолчанию для usamap функция).

latlim = [32 42];
lonlim = [-125 -111];
h = usamap(latlim, lonlim);

Чтение usastatehi shapefile и возвращает подмножество содержимого shapefile, заданное пределами широты и долготы. The shaperead функция возвращает данные в структуре, называемой states .

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

Сохраните данные о широте и долготе из структуры в векторах lat и lon .

lat = [states.Lat];
lon = [states.Lon];

Проецируйте объекты закрашенной фигуры на осях карты.

patchm(lat, lon, [0.5 0.5 1])

Измените проекцию на Lambert Equal Area Azimuthal и сбросьте источник координат и пределы системы координат.

setm(gca,'MapProjection','eqaazim','Origin',[37 -118], ...
   'FLatLimit',[-Inf 6]) 
setm(gca,'mlinelocation',2,'plinelocation',2)
tightmap