exponenta event banner

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

После создания объекта оси карты с помощью axesmнезависимо от того, отображаются ли данные карты или нет, можно изменить текущую проекцию, а также многие ее параметры. Вы можете использовать setm или maptool Пользовательский интерфейс для сброса проекции. В остальной части этого раздела описываются соображения и параметры, связанные с переключением проекций в осях карты. Дополнительные сведения приведены для выполнения этого с geoshow в окне «Изменение проекций карты с помощью геошоу».

При переключении с одной проекции на другую 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)

Изменение границ рамки сброса проекции

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

Построение пустых осей карты для региона США в конформной конической проекции Ламберта (проекция по умолчанию для usamap функция).

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

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

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