量化点位上的地图失真

天梭而且mdistort函数提供了不同形式的地图投影误差的概览。但是,有时需要对特定位置的误差进行数值估计,以便量化或校正地图失真。这是很有用的,例如,如果您在地图上对环境数据进行统一采样,并希望精确地知道与每个采样点相关的面积有多大,这是一个随位置而变化的统计数据,并且依赖于投影。一旦有了这些信息,就可以根据地图投影引起的区域变化调整环境密度和其他统计数据。

映射工具箱™函数从当前投影或mstruct返回特定于位置的映射错误统计信息。的distortcalc函数计算相同的失真统计信息mdistort,但用于作为参数提供的指定位置。每次提供一个纬度-经度位置或以向量形式提供。一般形式是

[areascale,angdef,maxscale,minscale,merscale,parscale] =…distortcalc (lat, mstruct长)

但是,如果您正在计算当前映射图,则省略mstruct。您不需要在您感兴趣的最后一个值后面指定任何返回值。

使用distortcalc确定地图投影几何畸变

下面的练习使用distortcalc从陆地面积数据集中计算阿根廷地图的最大面积失真。

  1. 阅读北美和南美多边形:

    Americas = shaperead('landareas','UseGeoCoords',true,…'Selector', {@(name)…strcmpi(name,{'北美和南美'}),' name '});
  2. 设置空间范围(地图限制),以包含南美洲的南部,也包括一个更接近南极的区域:

    Mlatlim = [-72.0 -20.0];Mlonlim = [-75.0 -50.0];[alat, alon] = maptriml([美洲。Lat),…(美洲。Lon], mlatlim, mlonlim);
  3. 使用这些极限创建一个墨卡托圆柱保形投影,指定一个五度光栅,然后绘制轮廓以供参考:

    图;axesm(“MapProjection”、“墨卡托”、“网格”,“上”,…mlatlim‘MapLatLimit’,‘MapLonLimit’,mlonlim,……'MLineLocation',5, 'PLineLocation',5) plotm(alat,alon,'b')

    地图是这样的:

  4. 每抽取十分之一的补丁轮廓进行分析:

    Alats = alat(1:10:数字(alat));Alons = alon(1:10:numel(alat));
  5. 计算样本点的面积失真(由扭曲calc返回的第一个值):

    Adistort =扭曲calc(alats, alons);
  6. 求整个阿根廷的面积失真范围(在本例中,赤道上单位面积的百分比):

    Adistortmm = [min(adistort) max(adistort)] Adistortmm = 1.1790 2.7716

    由于阿根廷地处中南部纬度地区,在墨卡托地图上,阿根廷的面积被夸大了,从北到南的误差明显不同。

  7. 删除任何S从坐标数组和图符号表示的相对扭曲为比例圆,使用scatterm

    nanIndex = isnan(adistort);alats(nanIndex) = [];alons(nanIndex) = [];adistort(nanIndex) = [];scatterm (alats,阿龙,20 * adistort,“红色”,“填满”)

    生成的地图如下所示:

  8. 如果它向极地延伸得更远,面积夸大的程度就会大得多。要知道有多大,得到50°S, 60°S和70°S的面积失真:

    A =扭曲calc(-50,-60) A = 2.4203 A =扭曲calc(-60,-60) A = 4 >> A =扭曲calc(-70,-60) A = 8.5485

    请注意

    你只能使用distortcalc查询当前映射帧或mstruct范围内的位置。外分产量结果。

  9. 使用这种技术,您可以编写一个简单的脚本,让您重复查询地图,以确定任何所需位置的失真。您可以使用图形光标选择位置inputm.例如,

    [plat plon] = inputm(1) plat = -62.225 plon = -72.301 >> a=扭曲calc(plat,plon) a= 4.6048

    当然,你得到的答案会根据你选择的点而有所不同。使用这种技术,您可以编写一个简单的脚本,让您可以重复查询地图,以确定任何所需位置的任何失真统计数据。

尝试改变地图投影或方向矢量,看看投影的选择如何影响地图失真。有关更多信息,请参阅的参考页distortcalc