tissot
и функции mdistort
предоставляют синоптические визуальные обзоры различных форм ошибки проекции карты. Иногда, однако, вам нужны числовые оценки ошибки в определенных местоположениях в порядке определить количество или исправить для искажений карты. Это полезно, например, если вы выбираете данные о состоянии окружающей среды на универсальной основе через карту и хотите знать точно, сколько области сопоставлено с каждой точкой выборки, статистическая величина, которая будет отличаться местоположением и будет зависимым проекции. Если у вас есть эта информация, можно настроить экологическую плотность и другие статистические данные, которые вы собираете для ареальных изменений, вызванных проекцией карты.
Функция Mapping Toolbox™ возвращает специфичную для местоположения ошибочную статистику карты в текущую проекцию или mstruct. Функция distortcalc
вычисляет ту же статистику искажения, как mdistort
делает, но для заданных местоположений, обеспеченных в качестве аргументов. Вы обеспечиваете местоположения долготы широты по одному или в векторах. Общая форма
[areascale,angdef,maxscale,minscale,merscale,parscale] = ... distortcalc(mstruct,lat,long)
Однако, если вы оцениваете текущую фигуру карты, не используете mstruct. Вы не должны задавать возвращаемые значения после последнего интереса для вас.
distortcalc
, чтобы определить геометрические искажения проекции картыСледующее осуществление использует distortcalc
, чтобы вычислить максимальное искажение области для карты Аргентины от набора данных контактных площадок.
Считайте полигон Северной Америки и Южной Америки:
Americas = shaperead('landareas','UseGeoCoords',true, ... 'Selector', {@(name) ... strcmpi(name,{'north and south america'}),'Name'});
Установите пространственную степень (пределы карты) содержать южную часть Южной Америки и также включать область ближе в Южный полюс:
mlatlim = [-72.0 -20.0]; mlonlim = [-75.0 -50.0]; [alat, alon] = maptriml([Americas.Lat], ... [Americas.Lon], mlatlim, mlonlim);
Создайте Меркаторскую цилиндрическую конформную проекцию с помощью этих пределов, задайте координатную сетку с пятью степенями, и затем постройте схему для ссылки:
figure; axesm('MapProjection','mercator','grid','on', ... 'MapLatLimit',mlatlim,'MapLonLimit',mlonlim,... 'MLineLocation',5, 'PLineLocation',5) plotm(alat,alon,'b')
Карта выглядит так:
Выберите каждую десятую точку схемы закрашенной фигуры для анализа:
alats = alat(1:10:numel(alat)); alons = alon(1:10:numel(alat));
Вычислите искажения области (первое значение, возвращенное distortcalc) в точках выборки:
adistort = distortcalc(alats, alons);
Найдите область значений искажения области по Аргентине (процент единичной площади на, в этом случае, экватор):
adistortmm = [min(adistort) max(adistort)] adistortmm = 1.1790 2.7716
Когда Аргентина занимает середину южных широт, ее область на Меркаторской карте завышена, и ошибки отличаются заметно с севера на юг.
Удалите любой NaN
s из координатных массивов и постройте символы, чтобы представлять относительные искажения как пропорциональные круги, с помощью scatterm
:
nanIndex = isnan(adistort); alats(nanIndex) = []; alons(nanIndex) = []; adistort(nanIndex) = []; scatterm(alats,alons,20*adistort,'red','filled')
Получившуюся карту показывают ниже:
Степень преувеличения области была бы значительно больше, если бы это расширило дальше к полюсу. Чтобы видеть, как намного больше, получите искажение области для 50°S, 60°S, и 70°S:
a=distortcalc(-50,-60) a = 2.4203 a=distortcalc(-60,-60) a = 4 >> a=distortcalc(-70,-60) a = 8.5485
Можно только использовать distortcalc
, чтобы запросить местоположения, которые являются в текущем кадре карты или пределах mstruct. Вне точек приводят к NaN
в результате.
Используя этот метод, можно записать простой скрипт, который позволяет вам запрашивать карту неоднократно, чтобы определить искажение в любом желаемом местоположении. Можно выбрать местоположения с графическим курсором с помощью inputm
. Например,
[plat plon] = inputm(1) plat = -62.225 plon = -72.301 >> a=distortcalc(plat,plon) a = 4.6048
Естественно ответ, который вы получаете, будет отличаться, в зависимости от какой точки вы выбираете. Используя этот метод, можно записать простой скрипт, который позволяет вам запрашивать карту неоднократно, чтобы определить любую статистическую величину искажения в любом желаемом местоположении.
Попытайтесь изменить проекцию карты или даже вектор ориентации, чтобы видеть, как выбор проекции влияет на искажение карты. Для получения дополнительной информации смотрите страницу с описанием для distortcalc
.