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);Создайте цилиндрическую конформную проекцию Mercator, используя следующие пределы, задайте пятиградусную решетку, а затем постройте график контура для справки:
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Поскольку Аргентина занимает средние южные широты, ее площадь на карте Меркатора завышена, и ошибки заметно различаются с севера на юг.
Удалить любое NaNs из массивов координат и символов графика для представления относительных искажений в виде пропорциональных окружностей, используя 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.