Сопоставьте предельные свойства

Во многих общих ситуациях, предельных свойствах карты, MapLatLimit и MapLonLimit, обеспечьте удобный способ задать ваш источник проекции карты или структурируйте пределы. Обратите внимание на то, что эти свойства намеренно избыточны; можно всегда избегать их, если вы желаете и вместо этого используете Origin, FLatLimit, и FLonLimit свойства настроить вашу карту. Когда они будут применимы, однако, вы, вероятно, найдете, что это легче и более интуитивно, чтобы установить MapLatLimit и MapLonLimit, особенно при создании новой карты оси с axesm.

Вы обычно используете MapLatLimit и MapLonLimit свойства настроить карту оси с ненаклонной, неазимутальной проекцией, с ее источником на Экваторе. (Большинство проекций, включенных в Mapping Toolbox™, попадает в эту категорию; например, цилиндрический, псевдоцилиндрический, конический, или измененный азимутальный.), Кроме того, даже с ненулевой широтой источника (источник от Экватора), можно использовать MapLatLimit и MapLonLimit свойства с проекциями, которые реализованы непосредственно, а не через вращения сферы (например, tranmerc, utm, lambertstd, cassinistd, eqaconicstd, eqdconicstd, и polyconicstd). Этот список включает проекции, используемые наиболее часто в крупномасштабных картах, таких как американская Геологическая служба топографические карты четырехугольника. Наконец, когда источник расположен в полюсе или на Экваторе, можно использовать предельные свойства карты с любой азимутальной проекцией (например, stereo, ortho, breusing, eqaazim, eqdazim, gnomonic, или vperspec).

С другой стороны, необходимо избежать предельных свойств карты, работая вместо этого с Origin, FLatLimit, и FLonLimit свойства, когда:

  • Вы хотите, чтобы ваша система координат карты была расположена асимметрично относительно долготы источника.

  • Вы хотите использовать наклонный аспект (то есть, чтобы присвоить ненулевой угол поворота третьему элементу "вектора ориентации", предоставленного как Origin значение свойства).

  • Вы хотите изменить аспект своей проекции по умолчанию (нормальный по сравнению с поперечным).

  • Вы хотите использовать ненулевую широту источника, кроме одного из особых случаев, отмеченных выше.

  • Вы используете одну из следующих проекций:

    • globe — Никакая потребность в пределах карты; всегда покрывает целую планету

    • cassini — Всегда в поперечном аспекте

    • wetch — Всегда в поперечном аспекте

    • bries — Всегда в наклонном аспекте

Нет никакой потребности предоставить значение для MapLatLimit свойство, если вы уже предоставили один для Origin и FLatLimit свойства. На самом деле, если вы предоставляете все три при вызове любого axesm или setm, FLatLimit значение будет проигнорировано. Аналогично, если вы предоставляете значения для Origin, FLonLimit, и MapLonLimit, FLonLimit значение будет проигнорировано.

Если вы действительно предоставляете значение для любого MapLatLimit или MapLonLimit в одной из упомянутых выше ситуаций, axesm или setm проигнорирует его и выдаст предупреждение. Например,

axesm('lambert','Origin',[40 0],'MapLatLimit',[20 70])

генерирует предупреждающее сообщение:

Ignoring value of MapLatLimit due to use of nonzero origin
 latitude with the lambert projection.

Важно изучить тот MapLatLimit и MapLonLimit дополнительные, избыточные свойства, которые связываются с Origin, FLatLimit, и FLonLimit свойства. С другой стороны, это не также затрудняет, чтобы знать, как обновить ваши оси карты, если вы имеете в виду следующее:

  • Origin свойство более приоритетно. Это установлено (неявно, если не явным образом) каждый раз, когда вы вызываете axesm и вы не можете изменить его только путем изменения пределов карты. (Обратите внимание на то, что при создании новой карты оси с нуля, пределы карты используются, чтобы помочь установить источник, если он явным образом не задан.)

  • MapLatLimit более приоритетен по сравнению с FLatLimit если обоим предоставляют в том же вызове axesm или setm, но изменяя один только любой влияние другой.

  • MapLonLimit и FLonLimit имейте подобное отношение.

Приоритет Origin средние значения это, если вы хотите сбросить свои пределы карты с setm и имейте setm также определите новый источник, необходимо установить Origin к [] в том же вызове. Например,

setm(gca,'Origin',[],'MapLatLimit',newMapLatlim,...
   'MapLonLimit',newMapLonlim)

С другой стороны, вызов как это автоматически обновит значения FLatLimit и FLonLimit. Точно так же вызов как:

setm(gca,'FLatLimit',newFrameLatlim,'FLonLimit',newFrameLonlim)

обновит значения MapLatLimit и MapLonLimit.

Наконец, вы, вероятно, не хотите пробовать следующее:

setm(gca,'Origin',[],'FLonLimit',newFrameLonlim)

потому что значение FLonLimit (различающийся MapLonLimit) не будет влиять на Origin, который просто превратится в зависимое проекцией значение по умолчанию (обычно [0 0 0]).

Задайте источник проекции карты и структурируйте пределы автоматически

В этом примере показано, как задать источник проекции карты и пределы системы координат с помощью двух предельных свойств карты: MapLatLimit и MapLonLimit. В то время как оси карты поддерживают свойства установить эти значения непосредственно, Origin, FLatLimit, и FLonLimit, это легче и более интуитивно, чтобы использовать предельные свойства карты, особенно при создании новой карты оси с axesm. Этот пример подсвечивает взаимозависимость пределов осей карты и предельных свойств карты.

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

latlim = [-80 80];
lonlim = [100 -120];
figure
axesm('robinson','MapLatLimit',latlim,'MapLonLimit',lonlim,...
    'Frame','on','Grid','on','MeridianLabel','on','ParallelLabel','on')
axis off
setm(gca,'MLabelLocation',60)
load coastlines
plotm(coastlat,coastlon)

Проверяйте что axesm функционируйте устанавливает источник и структурируют пределы на основе значений, вы задали использование MapLatLim и MapLonLim свойства. Долгота источника должна быть расположена на полпути между пределами долготы 100 E и 120 Вт. Поскольку карта охватывает 140 градусов, добавляя половину из 140 к западному пределу, долгота источника должна быть 170 градусами. Система координат сосредоточена на этой долготе с полушириной 70 градусов, и широта источника находится на Экваторе.

origin = getm(gca,'Origin')
origin = 1×3

     0   170     0

flatlim = getm(gca,'FLatLimit')
flatlim = 1×2

   -80    80

flonlim = getm(gca,'FLonLimit')
flonlim = 1×2

   -70    70

Переключите западную долготу до 40 градусов E (а не 100 градусов), чтобы включать немного больше Азии. Используйте setm функционируйте, чтобы присвоить новое значение MapLonLimit свойство. Отметьте асимметричный внешний вид карты.

setm(gca,'MapLonLimit',[40 -120])

Чтобы откорректировать асимметрию, переключите западную долготу снова, на этот раз задав источник. В то время как MapLatLimit и MapLonLimit свойства удобны, значения Origin, FLatLimit, и FLonLimit свойства более приоритетны. Необходимо задать значение источника, чтобы достигнуть карты, которую вы предназначили. Лучший способ сделать это должно задать пустое значение для Origin свойство и позволило setm команда вычисляет значение.

setm(gca,'MapLonLimit',[40 -120],'Origin',[])

Создайте цилиндрическую проекцию Используя предельные свойства карты

В этом примере показано, как создать цилиндрическую проекцию с помощью предельных свойств карты.

Загрузите данные о береговой линии.

load coastlines

Создайте Меркаторскую проекцию, покрывающую полный спектр допустимых широт с долготами, покрывающими полные 360 степени, запускающиеся на 60 Западе.

figure('Color','w')
axesm('mercator','MapLatLimit',[-90 90],'MapLonLimit',[-60 300])
axis off; 
framem on; 
gridm on; 
mlabel on; 
plabel on;
setm(gca,'MLabelLocation',60)
geoshow(coastlat,coastlon,'DisplayType','polygon')

Предыдущий вызов axesm эквивалентно:

axesm('mercator','Origin',[0 120 0],'FlatLimit',[-90 90],'FLonLimit',[-180 180]);

Можно проверить это путем проверки свойств.

getm(gca,'Origin')
ans = 1×3

     0   120     0

getm(gca,'FLatLimit')
ans = 1×2

   -86    86

getm(gca,'FLonLimit')
ans = 1×2

  -180   180

Обратите внимание на то, что карта и пределы системы координат фиксируются к области значений [-86 86] наложенный TrimLat только для чтения свойство.

getm(gca,'MapLatLimit')
ans = 1×2

   -86    86

getm(gca,'FLatLimit')
ans = 1×2

   -86    86

getm(gca,'TrimLat')
ans = 1×2

   -86    86

Создайте коническую проекцию Используя предельные свойства карты

В этом примере показано, как создать карту стандартной версии Ламберта Конформная Коническая проекция, покрывающая широты 20 Севера на 75 Севера и долготы, покрывающие 90 градусов, запускающихся в 30 градусах на запад.

Загрузите данные о береговой линии и отобразите их. Вызов axesm выше эквивалентно: axesm('lambertstd','Origin', [0 15 0], 'FLatLimit',[20 75],FLonLimit',[-45 45])

load coastlines
figure('Color','w')
axesm('lambertstd','MapLatLimit',[20 75],'MapLonLimit',[-30 60])
axis off; 
framem on; 
gridm on; 
mlabel on; 
plabel on;
geoshow(coastlat, coastlon, 'DisplayType', 'polygon')

Создайте коническую проекцию южного полушария

В этом примере показано, как создать карту стандартной версии Ламберта Конформная Коническая проекция в южное полушарие. Пример заменяет стандартные параллели по умолчанию и устанавливает MapLatLimit и MapLonLimit свойства.

Загрузите файл MAT данных о береговой линии, coastlines.mat.

load coastlines

Отобразите карту, установив MapLatLimit и MapLonLimit свойства.

figure('Color','w')
axesm('lambertstd','MapParallels',[-75 -15], ...
		'MapLatLimit',[-75 -20],'MapLonLimit',[-30 60])
axis off
framem on
gridm on
mlabel on
plabel on
geoshow(coastlat,coastlon,'DisplayType','polygon')

Создайте полярную азимутальную проекцию

В этом примере показано, как создать Полярную Равную область Азимутальное расширение карты проекции от Экватора до полюса и сосредоточенный по умолчанию на долготе 0.

Загрузите файл MAT набора данных береговой линии, coastlines.mat.

load coastlines

Создайте карту. Вызов axesm эквивалентно: axesm('eqaazim','MLabelParallel',0,'Origin',[90 0 0],'FLatLimit',[-Inf 90]);

figure('Color','w')
axesm('eqaazim','MapLatLimit',[0 90])
axis off
framem on
gridm on
mlabel on
plabel on;
setm(gca,'MLabelParallel',0)

Постройте береговые линии.

geoshow(coastlat,coastlon,'DisplayType','polygon')

Создайте антарктическую азимутальную проекцию

В этом примере показано, как создать Антарктическое Стереографическое Азимутальное расширение карты проекции от Южного полюса до 20 градусов S, сосредоточенный на долготе 150 градусов на запад. Включайте значение для Origin свойство для того, чтобы управлять центральным меридианом.

Загрузите данные о береговой линии и карту отображения.

load coastlines
figure('Color','w')
axesm('stereo','Origin',[-90 -150],'MapLatLimit',[-90 -20])
axis off; 
framem on; 
gridm on; 
mlabel on; 
plabel on;
setm(gca,'MLabelParallel',-20)
geoshow(coastlat,coastlon,'DisplayType','polygon')

Вызов axesm выше эквивалентен:

axesm('stereo','Origin',[-90 -150 0],'FLatLimit',[-Inf 70])

Создайте экваториальную азимутальную проекцию

В этом примере показано, как создать карту Равноотстоящей Азимутальной проекции с источником на Экваторе, покрывающем от 10 ° E к 170 ° E. Падения долготы источника в центре этой области значений (90 E), и карта достигают севера и юга к в 10 ° каждого полюса.

Считайте данные о побережье и отображение. Вызов axesm эквивалентно axesm('eqaazim','Origin',[0 90 0],'FLatLimit',[-Inf 80]).

load coastlines
figure('Color','w')
axesm('eqdazim','FLatLimit',[],'MapLonLimit',[10 170])
axis off; 
framem on; 
gridm on; 
mlabel on; 
plabel on;
setm(gca,'MLabelParallel',0,'PLabelMeridian',60)
geoshow(coastlat,coastlon,'DisplayType','polygon')

Создайте общую азимутальную проекцию

В этом примере показано, как создать карту Ортогональной проекции с источником, сосредоточенным под Парижем, Франция. Вы не можете использовать MapLatLimit или MapLonLimit здесь.

Читайте в данных о побережье и отображении.

load coastlines
originLat = dm2degrees([48 48]);
originLon = dm2degrees([ 2 20]);

figure('Color','w')
axesm('ortho','Origin',[originLat originLon])
axis off; framem on; gridm on; mlabel on; plabel on;
setm(gca,'MLabelParallel',30,'PLabelMeridian',-30)
geoshow(coastlat,coastlon,'DisplayType','polygon')

Создайте долгую узкую наклонную меркаторскую проекцию

В этом примере показано, как создать карту с долгой, узкой, наклонной Меркаторской проекцией. Пример показывает области 10 градусов любой стороне большого кругового курса полета от Токио до Нью-Йорка. Вы не можете использовать MapLatLimit или MapLonLimit .

load coastlines
latTokyo = dm2degrees([ 35 40]);
lonTokyo = dm2degrees([139 45]);

latNewYork = dm2degrees([ 40 47]);
lonNewYork = dm2degrees([-73 58]);

[dist,az] = distance(latTokyo,lonTokyo,latNewYork,lonNewYork);
[midLat,midLon] = reckon(latTokyo,lonTokyo,dist/2,az);
midAz = azimuth(midLat,midLon,latNewYork,lonNewYork);

buf = [-10 10];

figure('Color','w')
axesm('mercator','Origin',[midLat midLon 90-midAz], ...
    'FLatLimit',buf,'FLonLimit',[-dist/2 dist/2] + buf)
axis off; framem on; gridm on; tightmap
geoshow(coastlat,coastlon,'DisplayType','polygon')
plotm([latTokyo latNewYork],[lonTokyo lonNewYork],'r-')

Похожие темы