前言
应用场景:
点值数据经过插值后形成栅格数据。对于结果中,需要把水体等地表要素不具备值的地方剔除。由此引出了一些列的问题。
问题:
1、QGIS 中使用“按掩膜图层裁剪栅格”,裁剪完成在QGIS中查看是吻合的,但是在 Openlayer 中加载有偏移;
2、ArcGIS 中使用“栅格—裁剪”,裁剪完成的是正确,但是GeoServer发布后“无数据值”的地方显示和“0”的值颜色一样;
下面就针对这两个具体的问题进行展开说下。
先放张插值后的图,下面是在这个图的基础上进行的处理(河道图层重叠的地方剔除掉)。
一、QGIS裁剪
最近一直使用的都是 QGIS 进行数据的处理,所以首先就是使用 QGIS。QGIS中对栅格提取中有可以使用掩膜进行提取,具体工具如下图:
处理的结果在 QGIS 中查看是对的,是吻合的(如下图,QGIS 中显示):
但是在 Openlayer 中显示却偏移了很多(如下图 Openlayer 中显示):
问题分析:
1、最开始以为是参数设置的问题,重复裁剪多遍,“输入分辨率”、“输出分辨率”等都进行了设置,可是结果还是一样的(此思路不对)
2、反反复复查看了裁剪前后的栅格详细信息,发现:范围、宽度、高度、分辨率等都不对(如下图)
由此看来,QGIS 在处理过程中,改变了栅格的一些基础信息,导致显示有问题。
下面就换了思路,换用 ArcGIS 做裁剪处理。
二、ArcGIS裁剪
ArcGIS 中裁剪的功能界面如下,在使用过程中需要有几个点注意:
1、勾选“使用输入要素裁剪几何”,如果不勾选,裁剪出的结果并不是输入范围内的;
2、NoData 值,根据自己需要填一个比较大或者比较小的值(我这里设置成 -10000,虽然设置了,在 ArcGIS 或者 QGIS 里面查看还是 “无数据值”,但是在 GeoServer 里面是可以读取这个值的),是为了下面设置 GeoServer 里面样式;
设置 GeoServer 样式问题。由于“无数据值”,显示的时候都和 0 显示一样的颜色,这里需要自己编辑下颜色,添加对应值为透明颜色:
<sld:ColorMapEntry label="-500" quantity="-500" color="#c70000" opacity="0"/>
到这里最终效果终于成功了(摸索了好几天)。