记录一个我一下午没有弄明白的问题——填洼处理+地形切片后坐标纬度整体向北发生了偏移
- 之前在网上下载的地形影像,没有进行任何的处理,直接利用
cesiumlab
(一款对接cesium的服务软件)进行了切片,加载到cesium
里,但是加载出来的效果有很明显的凹凸
现象,明显不是正常的地形起伏,术语称之为汇
,解释如下:
汇是指流向栅格中流向无法被赋予八个有效值之一的一个或一组空间连接像元。在所有相邻像元都高于待处理像元时,或在两个像元互相流入以创建一个由两个像元构成的循环时,都会发生这种情况。
- 一般只会有小部分产生这种情况,要求不高则可以忽略,但是在水文分析的时候这种情况就非常致命的了,比如水流分析,会因为这种现象无法得到正确的结果。
- 填洼,解决这种突然的地形高程缺失现象可以通过
arcmap
的填洼处理。关于洼和填洼的解释如下:
洼地(和突起)是由于数据的分辨率或将高程四舍五入到最近的整数值而产生的常见错误。
填洼工具使用与焦点流、流向、洼地、分水岭和区域填充等工具等效的功能来定位和填充洼地。该工具的执行过程会进行迭代,直到指定 z 限制内的所有洼地均填充完毕。在填充洼地的同时,可能会在填充区域的边界处创建其他洼地,这些洼地将在下个迭代中移除。
arcmap
关于填洼的操作比较简单,具体流程如下:
ArcToolBox --> Spatial Analyst Tools --> Hydrology -->Fill
-
ok,那个
fill
工具就是用来洼地填充的,接下来按提示输入影像即可,输入影像是RGB的.tif
格式的影像,输出来的是填洼处理后的图像,是灰度影像,格式是.grd
,是esri的一种私有的栅格影像格式
。 -
在
cesiumlab
地形切片中输入的数据格式里没有.grd
,ok我以为不能用这种格式(后来发现这种格式也可以),于是利用arcmap
进行转换了一下,输出为tif
格式。关于栅格格式的转化,工具栏里很容易找到。
-
好的,我就把影像导入到
cesiumlab
切片了,切片过程是没有什么问题的,之后我把它加载到ceisum
里去,发现地形影像消失了!!! -
难受的一下午开始了!
找原因
- 因为我把地球的背景色给关了,地图影像也只是加载的一小部分,所以一开始以为是地形没有加载进来,就去浏览器网络服务里面找,发现
.terrain
的文件还是在的,说明地形已经加载进来了,我大概看了下看了下影像图层的四面八方
,果然在北边有一个小块的凸起,很明显,地形影像是发生了偏移。赤裸裸的证据!
- 很好!我就去找切片后的源文件,说实话因为我菜,不知道
cesiumlab
他们家的是怎么对栅格数据进行切片的,但是散列切片后的json
文件我还是可以看得懂的。我就把填洼前和填洼后的地形切片后的文件meta.json
文件进行了对比,重点是坐标对比,发现的确不一样了:
前:
{“east”:118.795133829117,“north”:31.9241988658905,“south”:31.9055306911469,“west”:118.773161172867}
后:
{“east”:118.795133829117,“north”:32.0971262454987,“south”:32.0784151554108,“west”:118.773161172867}
- 这是地形边界的位置,东西方向没啥变化,但是南北方向整体向上平移了
0.17
度的样子,不晓得为什么,下意识地意识到时填洼处理过程中坐标发生了偏移,但是填洼只是对影像进行高程填补,按理说是不会出现坐标的偏移问题的。关于填洼的细节操作,也可以参考:
ArcGIS水文分析实战教程(4)地形预处理 - 还是去
arcmap
里查看了一下填洼处理前后的坐标变化,意料之中的坐标并没有什么变化:
处理前:
处理后:
然后我就一直在找原因,找到了现在。。。然后我就死心了,
- 分析原因:
第一种,可能是因为波段的原因
,但是切片处理的是高程波段,应该和波段没啥子太大关系。由于自己菜,不太清楚三波段的tif文件和只有灰度值的tif文件有什么不一样,直观地认为只有颜色的变化。
第二种,墨卡托投影坐标没有改变,经纬度可能已经发生改变了
,说实话我也不太信,但是web墨卡托投影的y方向本来就是正常的投影方向,只是为了偷懒
使得y方向的坐标范围和x方向保持一致,有可能在填洼处理之后后,纬度值已经发生了改变。
第三种,切片的问题
,我不晓得它是怎么切片的,我看哪天我能不能学会,学会了再去解决,就猜猜。
总结
太难受了,求个大佬教教我!!!