arcgis和qgis

遇到这种零星NODATA像元的麻烦事儿,其实也没多难。我是把两套主流的GIS软件拿来试了试,这回就把过程给捋一捋。你看那套分省的栅格数据,拼完以后那些像撒盐一样的白色小点冒出来,这多半是因为拼接缝或者是云影、边界缝隙导致的。不管是多大的窟窿,在遥感监测或者土地覆被分析里,都算信息丢了。那咋把这些白色斑点一次性给抹平呢?下面我就用ArcGIS和QGIS这两个工具来说说我咋干的。 先说说ArcGIS。网上的攻略讲过,用栅格计算器配合FocalStatistics函数,通过滑动窗口的方式让周围像素“投票”,把多数值给覆盖过去。具体操作是这样:我先开了个栅格计算器,敲了两行命令。第一行是个判断,要是像素是空的(IsNull),就留着原来的值;第二行是给非空的地方算个5×5窗口的众数(MAJORITY)。“L2_2020.tif”这个文件我给它改名叫“NODATAFIX2020.tif”。运行完一看,白色的斑点确实少多了,但还剩下些难搞的顽固分子。 那接着我把窗口缩小成3×3再来一次。这就好比是二次扫荡,把那些漏网的鱼全给捞干净了。两轮操作下来,这些NODATA像元基本上算是清零了,肉眼看上去没啥明显的空缺。 再看看QGIS这边。因为ArcGIS那种层层嵌套的函数挺容易写错的,要是改了坐标系还得再调整一遍,实在是有点麻烦。QGIS直接用GRASS插件里的r.fill.stats就搞定了,而且这个自带的“众数”模式对分类数据特别友好。操作步骤是这样的:在QGIS里找到GRASS插件启动一下,建个数据库把目标栅格加载进去。核心参数就三个地方需要留意:Preserve original cell values打个勾,保证原来的分类不会被均值化了;Mode选“Majority”,就是让多数类别说了算;Masking option设成“None”,免得水体或者阴影又把它挡住了。 跑完这个命令以后发现坐标系变了?从克拉索夫斯基变成了WGS84?这也没事。用ArcGIS打开属性表找空间参考那块儿,定义一下自定义CRS就行,把EPSG:4326换回原来的那个坐标系误差小到可以忽略不计。 最后总结一下吧:如果你处理的数据量在500MB以下,又不想折腾坐标系那套麻烦事儿——就用ArcGIS跑两轮MAJORITY函数就行,脚本还特容易复制;如果数据量超过1GB了,想一步到位还得处理分类数据——直接用QGIS的GRASS模块r.fill.stats就行。 把这些白色斑点全都搞定以后,你再去做趋势分析、分类精度评估或者可视化制图的时候就不会再遇到黑块尴尬的情况了。祝你一次成功!