思路
复旦大学生命科学学院GC3S团队生产发布了中国首套首套10米分辨率的建筑高度栅格数据(CNBH-10m),前一篇文章介绍了利用QGIS、ArcGIS与ENVI提取建筑数据,也介绍了建筑白膜数据赋高程值,二者结合,就可以实现建筑白膜赋高度数据。
问题
与DEM不同,建筑高度数据只有在建筑存在的地方有值,其他位置是NoData,如下图所示:绿色的框中的建筑多边形的中心点处建筑高度数据为空值。
即使不转换为点,通过获得多边形区域内值赋给建筑白膜得做法仍然有空值的情况(蓝色方框)。这会导致很多数据没有值。
解决方案
ArcGIS对于NoData的区域可以通过设置滑动窗口统计计算空置区域周边的值(最大值、最小值或者均值)等填补缺失值。
Con(IsNull("Raster.tif"), FocalStatistics("Raster.tif", NbrRectangle(10,10, "CELL"), "MAXIMUM"), "Raster.tif")
con函数有三个参数,1是判断条件,如果为真,则值用2计算(统计周边像素的值),如果为为假,则用3的值(原值不动)
FocalStatistics函数为焦点统计工具的函数形式
FocalStatistics(in_raster, {neighborhood}, {statistics_type}, {ignore_nodata}, {percentile_value})
下图可以对比插值前后空值区域明显减小
注意白膜数据合并后记得进行拓扑检查,把重复的数据去掉。
引用文献:
【数据分享】中国首套10米分辨率的建筑高度数据(tif格式)
Remove and replace no data values within a raster using statistical information from the surrounding data values.
ArcGIS中con函数的应用实例
Arcgis填补栅格空缺值Nodata
焦点统计
NbrRectangle