的天梭
和mdistort
函数提供不同形式的地图投影误差的概览。然而,有时您需要对特定位置的误差进行数值估计,以便量化或纠正地图失真。这是很有用的,例如,如果您在地图上对环境数据进行统一采样,并希望准确地知道与每个采样点相关联的面积,这是一个随位置和投影而变化的统计数据。一旦你有了这些信息,你就可以调整环境密度和其他由地图投影引起的区域变化而收集的统计数据。
映射工具箱™函数从当前投影或对象返回特定位置的映射错误统计信息mstruct
.的distortcalc
函数计算的失真统计数据与mdistort
,但用于作为参数提供的指定位置。每次提供一个或以矢量形式提供经纬度位置。一般形式是
[areascale, angdef maxscale、minscale merscale, parscale] =…distortcalc (lat, mstruct长)
但是,如果您正在评估当前的映射图,则省略mstruct
.您不需要在您感兴趣的最后一个返回值之后指定任何返回值。
distortcalc
确定地图投影几何失真下面的练习使用distortcalc
从陆地面积数据集计算阿根廷地图的最大面积失真。
阅读北美和南美多边形:
美洲= shaperead (landareas。轴马力”、“UseGeoCoords”,真的,…“选择器”,{@(名字)…strcmpi(name,{'north and south america'}),' name '});
设置空间范围(地图限制),包括南美洲的南部,也包括靠近南极的区域:
Mlatlim = [-72.0 -20.0];Mlonlim = [-75.0 -50.0];[alat, alon] = maptriml([美洲。Lat),…(美洲。朗,mlatlim mlonlim);
使用这些限制创建一个墨卡托圆柱正形投影,指定一个五度的网格,然后绘制轮廓以供参考:
图;axesm(“MapProjection”、“墨卡托”、“网格”,“上”,…mlatlim‘MapLatLimit’,‘MapLonLimit’,mlonlim,……“MLineLocation”5“PLineLocation”,5)plotm (alat,阿龙,' b ')
地图是这样的:
每10个点采样一次进行分析:
alats = alat(1:10:元素个数(alat));阿龙=阿龙(1:10:元素个数(alat));
计算区域畸变(返回的第一个值distortcalc
)在样本点:
Adistort = distortion (alats, alons);
求阿根廷地区的面积失真范围(单位面积在赤道上的百分比):
Adistortmm = [min(adistort) max(adistort)
由于阿根廷位于中南部纬度,在墨卡托地图上它的面积被夸大了,从北到南的误差明显不同。
删除任何南
S的坐标数组和标绘符号,以比例圆表示相对失真,使用scatterm
:
nanIndex = isnan (adistort);alats (nanIndex) = [];阿龙(nanIndex) = [];adistort (nanIndex) = [];scatterm (alats,阿龙,20 * adistort,“红色”,“填满”)
结果如下图所示:
如果它向极地延伸得更远,面积被夸大的程度就会大得多。要查看有多大,获取50°S, 60°S和70°S的区域畸变:
A = barslast (barslast (barslast (barslast (barslast (barslast (barslast (barslast (barslast (barslast (barslast (- barslast ())))))))
请注意
你只能使用distortcalc
查询当前地图框架中的位置或mstruct
限制。外点产生南
作为一个结果。
使用这种技术,您可以编写一个简单的脚本,该脚本允许您重复查询地图,以确定在任何所需位置的失真程度。您可以使用图形光标选择位置inputm
.例如,
[plon] = input (1) plon = -62.225 plon = -72.301 >> a= convert (plat,plon
你得到的答案自然会随你选择的点而变化。使用这种技术,您可以编写一个简单的脚本,该脚本允许您重复查询地图,以确定任何所需位置的任何失真统计数据。
尝试改变地图投影,甚至方向向量,看看投影的选择如何影响地图失真。有关更多信息,请参阅参考页distortcalc
.