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

Во многих распространенных ситуациях карта ограничивает свойства, 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 значение свойства).

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

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

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

    • 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 свойства. С другой стороны, не слишком сложно узнать, как обновить оси карты, если иметь в виду следующее:

  • The 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 и 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

Создайте проекцию Mercator, охватывающую всюсь область значений допустимых широт с долготами, охватывающими все 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

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

Этот пример показывает, как создать карту стандартной версии проекции Lambert Conformal Conic, охватывающей широты от 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')

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

В этом примере показано, как создать карту стандартной версии проекции Lambert Conformal Conic в Южное полушарие. Пример переопределяет стандартные параллели по умолчанию и устанавливает 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')

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

В этом примере показано, как создать карту с длинной, узкой, косой проекцией Меркатора. Пример показывает область 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-')

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте