Во многих общих ситуациях, предельных свойствах карты, 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-')