ArcGIS栅格按照像元大小生成矢量的方法
1.前言
最近有一个需求,是需要按照tin生成DEM并将DEM按照像元生成每个栅格大小的矢量。
实验发现,普通的栅格转面工具,会把相同高程值的栅格生成的矢量进行合并,虽然可以对生成的矢量进行手动切割,但如果研究区较大,将会是较大的工程,笔者在师弟的帮助下发现了一种更为简便的方法,在此记录。
2.DEM转为矢量
(1)TIN转FLOAT类型DEM
TIN数据:
在ArcToolBox中打开3D Analyst Tools/转换/由TIN转出/TIN转栅格,参数设置如下图所示,“输出数据类型”选择FLOAT,注意虽然栅格转面工具,输入的必须是整型DEM,但是如果“输出数据类型”选择INT,有可能会有地方没有值,如下图所示,图中白色部分则为值缺失部分:
因此,需要先生成FLOAT类型DEM,再转换为INT类型DEM。TIN转栅格工具参数设置:
生成的FLOAT类型DEM:
(2)FLOAT类型DEM转INT类型
在ArcToolBox中打开3D Analyst Tools/栅格计算/转为整型,参数设置如下图所示:
生成的整型DEM,则不会像直接由TIN生成的整型DEM出现值缺失的情况,结果如下所示(本次裁剪了一下栅格,但是是同一个研究区):
3.DEM转为矢量
在ArcToolBox中打开Conversion Tools/由栅格转出/栅格转面,注意,简化面不要勾选,参数设置如下:
生成的矢量如下所示:
然而,需求是将DEM一个栅格一个栅格的生成矢量,类似下图,所以这并不满足要求。
4.切割矢量
在此来介绍一种快速切割的方法:
(1)提取面要素的折点
在ArcToolBox中打开Data Management Tools/要素/要素折点转点,参数设置如下:
生成的折点如下:
(2)添加XY坐标
在ArcToolBox中打开Data Management Tools/要素/添加XY坐标,输入要素选生成的点集即可,生成之后,可在其属性表中查看每个点都有了相应的X、Y坐标,如下图所示:
(3)将所有点X方向、Y方向分别连线
在ArcToolBox中打开Data Management Tools/要素/点集专线,参数设置如下:
生成X方向的线集合,如下图所示:
同理,生成Y方向的线集合:
(4)合并线集
将上述生成的两个线集,合并为一个图层,在ArcToolBox中打开Data Management Tools/常规/合并,输入数据集选择上述生成的两个线集合,生成结果如下,可以看到已生成大部分格子,但仍有缺失。
(5)打断线集
因为之后需要用到延伸工具,因此在此将所有线打断,打开Data Management Tools/要素/要素转线,可以看出已经在相交处打断。
(6)延伸线集
如下图所示,如果线没有相互相交,那我们无法得到所有的格子,则需将未完全相交的线,延伸至最外侧线。
打开编辑器,开始编辑合并生成的线图层,打开编辑器(R)\更多编辑工具(E)\高级编辑,将用到高级编辑中的延伸工具,延伸工具介绍如下:
即先选中一条将要延伸到的线,再选择另一条线去连接它,如下图,首先选择一条线:
再点击高级编辑器第3个图标,继续单击将要延伸到选中线的线,如下,可以看到线已延伸至所选要素:
按照此方法,把所有未全部相交的线一一处理,则可以得到栅格像元大小的矢量线图层,如下:
(7)线转面
在ArcToolBox中打开Data Management Tools/要素/要素转面,输入要素选择上述处理好的线集合,即可生成面,但是现在面没有想要的属性。
(8)面相交
在ArcToolBox中打开Analysis Tools/叠加分析/相交,输入要素选择上述线转面要素及之前DEM生成的矢量,即可得到带有高程值的矢量面。
以上便是本次切割矢量的一种方法,如有更加简便的方法,欢迎留言。