简化面和数据线

此示例示出了如何使用简化多边形和数据线reducem功能。简化的多边形和线数据可以加快某些计算,而又不使数据的任何显着的影响。接近简化的方法之一是使用reducem与在第一默认公差值并查看输出。如果结果不符合您的要求,重复操作,增加或减少的公差值达到你想要的结果。reducem返回使用的公差值。有关矢量数据简化的更多信息,请参见从而简化了矢量坐标数据

简化线数据使用默认设置

提取从马萨诸塞州的海岸线和国界usastatehi.shpshape文件。

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,'显示类型''线''颜色''红色'

为了获得在两个轮廓,用更好看XLIMylim以放大的地图的一部分。通知缩小的轮廓符合原始地图的大致轮廓,但如何失去了很多细节。

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,'显示类型''线''颜色''黑色'