在利用下面的程序之前,要确定电脑上安装了arinfo workstation
在如下图中进入arc模块:
或者通过“开始”--“运行”--输入cmd后回车,在出现的窗口中输入ARC后回车,如图:
进入之后,依次输入下列命令
/*利用w命令进入工作空间,比如你的数据放在D:DEM中,
w d:dem
/*其中filename是txt文件名
&run filename.txt
可以将下面的程序稍加修改(需要修改的地方我会用红笔标识),复制粘贴到一个filename.txt文件中,在txt中可以把所有的汉字删掉(可以查看本博文的附件)
/*水文分析是在grid模块下进行的,所以在TXT文件中,首先要进入GRID模块
grid
/*(1)填洼,红色字体表示dem原始数据,本身还有关于处理洼地深浅的阈值,但是一般可不用考虑
fill Extract_dem fil_dem
/*(2)计算水流方向,这是十分重要的一步,下面很多的步骤,都需要水流方向,在arcgis中,方向是1,2,4,8,16,32,64,128八个方向,这一方面的内容,可以查看arcgis的帮助
dir_dem = flowdirection(fil_dem)
/*(3)划分BASN,在水文分析中可要可不要这一步,basn主要是划分大的流域边界的
basn_dem = basin(dir_dem)
/*(4)汇流计算,原理就是按照水流方向,将每个网格的水累加到流域出水口或者洼地所在的网格
accum_dem = flowaccumulation(dir_dem)
/*(5)确定主河道,阈值(一个数字)根据经验来判断,可以尝试改变阈值,阈值小,河道的分级相对就多;阈值大,河道的分级少,主河道显现的更明显。
stmgrd = con(accum_dem > 阈值,1)
/*(6)将主河道中的像元连接一起
stmlnk = streamlink(stmgrd,dir_dem)
/*(7)确定出水口,这一步的目的,是为了找到控制流域的出水口,以便确定流域边界
stmlnk_max = zonalmax(stmlnk,accum_dem)
outlet = con(stmlnk_max == accum_dem,stmlnk)
/*(8)计算watershed,一个watershed对应一个出水口(outlet),一个watershed对应一条支流
subwatershed = watershed(dir_dem,outlet)
/*(9)将栅格河道转化为矢量,以下几步是为了能够在ARCmap中制作地图时更好地显示和计算河道的长度所作的。如果只需要流域边界,以下几步可不要
stmcov = gridline(stmlnk)
/*赋给河道等级好
stmord = streamorder(stmgrd,dir_dem)
/*将等级河道转化为矢量
stmcovln = streamline(stmord,dir_dem)
/*(10)选取感兴趣的区域,主要用CON语句,在arcmap中查看感兴趣区的值,然后利用con语句裁切出来,如
/*roibasn = con(basn_dem == 928,basn_dem)
/*roioutlet = con(outlet == 值,outlet) (可以将这一步放在第(7)步之前,这样可以很方便的找到所需要的流域)
至此所有的分析过程结束,可以获得感兴趣流域的边界、河道以其相应的面积、长度等参数。
https://blog.sciencenet.cn/blog-432035-414043.html
上一篇:
开篇语下一篇:
三位美女陪同的新疆、西藏扎达之行