此示例示出了如何使用简化多边形和数据线reducem
功能。简化的多边形和线数据可以加快某些计算,而又不使数据的任何显着的影响。接近简化的方法之一是使用reducem
与在第一默认公差值并查看输出。如果结果不符合您的要求,重复操作,增加或减少的公差值达到你想要的结果。reducem
返回使用的公差值。有关矢量数据简化的更多信息,请参见从而简化了矢量坐标数据。
提取从马萨诸塞州的海岸线和国界usastatehi.shp
shape文件。
MA = shaperead('usastatehi.shp','UseGeoCoords',真正,...“选择”{@(名称)strcmpi(名称,“马萨诸塞州”)'名称'});masslat = ma.Lat;masslon = ma.Lon;
其结果是一对与顶点957勾勒出状态矢量。
numel(masslat)
ANS = 957
使用简化的轮廓reducem
使用默认的公差值的功能。
[masslat1,masslon1,CERR,TOL] = reducem(masslat 'masslon');
检查结果。顶点的数量已减少到252载体已被减少到约原来的长度的四分之一。
numel(masslat1)
ANS = 252
numel(masslat1)/ numel(masslat)
ANS = 0.2633
检查返回的错误和公差值reducem
。该CERR
值表示reducem
了约3.3%减小轮廓的总长度。该容差reducem
用于实现这种减少为0.006度,或约660米。
[CERR TOL]
ANS =1×20.0331 0.0060
画出红色缩小的轮廓在蓝色的原始轮廓,使用geoshow
。在该决议中,很难看到原来的轮廓和缩小的轮廓之间的任何差别。
图axesm('MapProjection','eqdcyl','MapLatLim'[41.1 43.0],...'MapLonLim'[-73.6,-69.8]'帧',“关”,“网格”,“关”);geoshow(masslat,masslon,'显示类型','线','颜色','蓝色')geoshow(masslat1,masslon1,'显示类型','线','颜色','红色')
为了获得在两个轮廓,用更好看XLIM
和ylim
以放大的地图的一部分。通知缩小的轮廓符合原始地图的大致轮廓,但如何失去了很多细节。
axesm('MapProjection','eqdcyl','MapLatLim'[41.1 43.0],...'MapLonLim'[-73.6,-69.8]'帧',“关”,“网格”,“关”);XLIM([0.0104 0.0198])ylim([0.7202 0.7264])geoshow(masslat,masslon,'显示类型','线','颜色','蓝色')geoshow(masslat1,masslon1,'显示类型','线','颜色','红色')
重新进行操作,此时的公差值加倍。
[masslat2,masslon2,cerr2,TOL2] = reducem(masslat 'masslon',0.012);numel(masslat2)
ANS = 157
numel(masslat2)/ numel(masslat)
ANS = 0.1641
检查返回的错误和公差值reducem
。这一次,CERR
值表示reducem
了约5.2%减小轮廓的总长度。该容差reducem
用于实现这种减少为0.012度。
[cerr2 TOL2]
ANS =1×20.0517 0.0120
情节墨绿色这个缩小的轮廓在蓝色的原始轮廓。注意这个缩小的轮廓如何保持原有地图的大致形状,但失去了很多细节的。
geoshow(masslat2,masslon2,'显示类型','线','颜色',[0 0.6 0])
增加的公差至0.1度。
[masslat3,masslon3,cerr3,tol3 = reducem(masslat 'masslon',0.1);
剧情在黑这个缩小的轮廓。请注意这是如何缩小的地图只保留了原来的形状最广泛的元素,失去很多细节。
geoshow(masslat3,masslon3,'显示类型','线','颜色','黑色')