所需数据:emidalat,一个高程栅格;emidastream.shp,一个流域shapefile。
用高程栅格数据集勾绘整个流域的操作流程。数据源是高程栅格。emidastream.shp作为参照图层。
除非特别说明,所有工具都驻留在空间分析工具/水文工具集。
1. 打开 emidalat和emidastream.shp。
2. 检查中emidalat是否存在小洼地。双击流向工具。选择emidalat作为输入地面栅格网,键入temp_flowd作为输出的水流方向栅格,点击确定。
3. 在temp_flowd建立后,双击汇工具,选择temp_flowd作为输入的水流方向栅格,将sinks设置为输出栅格,点击确定。
4. 填平emidalat中的小洼地。双击填洼工具,选择emidalat作为输出地面栅格,设定emidafill为输出地面栅格,点击确定。
5. 用emidafill继续上述操作。双击流向工具,选择emidatfill作为输入地面栅格,设定flowdirection为输出的水流方向栅格,运行命令。
6. 接着创建一个流量累积栅格。双击流量工具,选择flowdirection为输入的水流方向栅格,键入flowaccumu为输出累积栅格,点击确定。
7. 选择(或设定临界值)flowaccumu中流入值超过500个像元的单元,双击空间分析工具/条件分析工具集的条件函数工具,选择flowaccumu作为输入的条件栅格,键入表达式Value > 500,键入1作为常数值,设定net 为输出栅格,并点击确定运行命令。在接下来的分析中将用到net作为输入河流栅格。
8.为net中的交汇点(或交叉点)间的每个河段指定一个唯一值,返回到Hydrology工具集,双击河流链接工具,选择net作为输入的河流栅格,flowdirection为输入的流向栅格,source为输出栅格。点击确定。
9.至此,准备了勾绘流域所需的所有数据。双击分水岭工具,选择flowdirection作为输入的流向栅格,source为输入的栅格,watershed指定为输出格网,点击OK。将watershed的符号改变成唯一值,以便可以看出每一个流域。
ArcMap中的Python脚本完成以上操作,用这个选项,首先在ArcMap的标准工具条中打开Python窗口。假设工作空间是d:/chap(“/”用来指定路径),其中包含emidalat,你需要在“>>>”后输入一下预计,以完成:
>>> inport arcpy
>>> from arcpy import env
>>> from arcpy.sa import *
>>> env.workspace = “ d:/chap14”
>>> arcpy.CheckExtension(“ Spatial ”)
>>> outflowdirection = FlowDirection (“ emidalat”)
>>> outsink = Sink (“ outflowdirection”)
>>> outfill = Fill (“ emidalat”)
>>> outfd = FloeDirection (“ outfill”)
>>> outflowac = FlowAccumulation (“ outfd”)
>>> outnet = Con (“ outflowac”, 1, 0,”VALUE>500”)
>>> outstreamlink = StreamLink (“ outnet”,” outfd”)
>>> outwatershed = Watershed (“ outfd”,” outstreamlink”)
>>> outwatershed.Save (“ outwatershed”)
脚本的前5行输入了arcpy和Spatial Analyst 工具,定义了工作空间。接下来是使用FlowDirection、Sink、Fill、Flowdirection(已填洼DEM)、FlowAccumulation、Con、StreamLink和Watershed这些工具的语句。每输入一条语句,你会在ArcMap中看到输出结果。
- END -
领取专属 10元无门槛券
私享最新 技术干货