DavidYW分享 http://blog.sciencenet.cn/u/DavidYW

博文

利用简单的程序代码处理水文单元 ArcINFO Workstation

已有 6861 次阅读 2011-2-18 10:49 |个人分类:科学研究|系统分类:科研笔记| workstation, 水文分析, 流域划分

   在利用下面的程序之前,要确定电脑上安装了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

上一篇:开篇语
下一篇:三位美女陪同的新疆、西藏扎达之行
收藏 IP: 124.16.175.*| 热度|

2 宁佳 sunbinfeng

发表评论 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-18 09:55

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部