Во многих общих ситуациях предельные свойства карты, 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 Западе. Вызов axesm выше эквивалентен: axesm('mercator','Origin',[0 120 0],'FlatLimit',[-90 90],...
'FLonLimit',[-180 180])
.
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')
Проверьте это путем проверки этих свойств.
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-')