资源简介
利用ArcGIS计算河流的平均比降。参考的方法是【约翰斯通-克罗斯】法
代码片段和文件信息
#############################################################
# #
# 该工具利用【约翰斯通-克罗斯】方法计算河底平均比降 #
# 在使用的时候必须先选择一条河流,工具会判断输入的河流数量 #
# 大于一条河流时不予以计算 #
# 用于计算的DEM为无凹陷点DEM #
# #
#############################################################
# -*- coding: gbk -*-
import arcpy
import math
inputLine =arcpy.GetParameterAsText(0) #河流图层
dem = arcpy.GetParameterAsText(1) #无凹陷点DEM
riverLen = 7873.232038
arcpy.AddMessage(u‘..................‘)
arcpy.AddMessage(u‘......开始执行...........‘)
# 记录高程值的数据
heightList = []
iputCout=0
mmCursor = arcpy.da.SearchCursor(inputLine [“SHAPE@LENGTH“])
for row1 in mmCursor:
riverLen = row1[0] #顺便获取河流长度
iputCout=iputCout+1
arcpy.AddMessage(u‘......获取了河流长度......‘)
#如果选中的是一个线要素,则执行计算,否者不计算多条河流
if iputCout==1:
##先将线转为折点
outLine1 = arcpy.FeatureVerticesToPoints_management(inputLine “in_memory/outline“)
arcpy.AddMessage(u‘......河流线已经转换为点集.......‘)
#河流节点
riverPoints = []
# 获取河流的节点,以用作计算高差和河长
for row in arcpy.da.SearchCursor(outLine1 [“SHAPE@XY“]):
# 从点图层数据获取所有的点的XY
x y = row[0]
#从地形数据中获取其高程的象元值
pointStr = str(x) +“ “+str(y)
result = arcpy.GetCellValue_management(dempointStr)
#print “point “+ str(vetPointL) + “ Height value is : “ + str(result)
riverPoints.append(row[0])
heightList.append(str(result))
arcpy.AddMessage(u‘......已经获取了折点的高程值......‘)
#子河段长度
subRiverList = []
hDiffList = []
# 计算每一个子河段的长度
for i in range(0len(riverPoints)-1):
xy = riverPoints[i]
x1y1 = riverPoints[i+1]
#计算河段长度
dis =math.sqrt(pow((x1-x)2)+pow((y1-y)2))
subRiverList.append(dis)
arcpy.AddMessage(u‘......河流子河段长度计算完成完成.......‘)
# 计算从高程从低到高部分的差距
listLen = len(heightList)
for j in range(0listLen-1):
h1 = float(heightList[j])
h2 = float(heightList[j+1])
xheight = 0
xheight = h1-h2
hDiffList.append(xheight)
arcpy.AddMessage(u‘......各折点的高程差计算完成......‘)
# 计算每个河段的比降
subbijiang = []
for i in range(len(hDiffList)):
Si= hDiffList[i]/subRiverList[i]
subbijiang.append(Si)
arcpy.AddMessage(u‘......子河段比降计算完成......‘)
# 计算最终的比降
# 计算分子
sumUp = 0
for i in range(len(hDiffList)-1):
sumUp = sumUp + subRiverList[i]*pow(subbijiang[i]0.5)
S = pow((sumUp/riverLen)2)
arcpy.AddMessage(u‘......该河流的总长为: ‘ + str(riverLen)+u‘ 平均比降为: ‘ +str(S))
arcpy.AddMessage(u‘......计算完毕.......‘)
else:
arcpy.AddMessage(u‘......您选中了 ‘+str(iputCout) + u‘ 条河流......‘)
arcpy.AddMessage(u‘......工具已经停止计算没有算出您想要的结果......‘)
arcpy.AddMessage(u‘......因为您目前选中了多条河流。只能选中一条河流进行计算!......‘)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-07-11 16:49 河流平均比降计算工具BY李远祥\
文件 12800 2017-07-11 16:47 河流平均比降计算工具BY李远祥\平均比降计算工具By李远祥.tbx
文件 3751 2017-07-11 14:01 河流平均比降计算工具BY李远祥\比降计算脚本.py
- 上一篇:毕业设计周报
- 下一篇:图片识别-感知哈希算法
相关资源
- ArcGIS中3D视线分析实验_包含2个工具
- 武汉市水系数据压缩文件
- 利用ArcGIS进行土地适宜性评价分析
- 水文分析工具箱.tbx
- arcgis 快速制图插件v2.0版本
- ArcGIS 3D Analyst 扩展模块
- arcgis地图符号库
- 广州市住宅区POI
- arcgis api for js 缓冲区分析
- ArcgisEngine开发空间分析:包括交集取
- 基于ArcgIs api for js 的路径分析
- ArcGIS_最优路径
- Arcgis中DEM的建立与运用
- ArcGis10.2.2地址+安装教程.docx
- Arc_GIS注册机(支持版本9.0-10.0)
- arc10.1和安装步骤
- ArcGIS Engine 10.1气象数据自动获取程序
- 二调图层颜色
- arcgis土地利用总体规划符号库.zip
- 江西省县界图.shp
- shp和txt数据批量转换
- FHK.ttfArcGis符号显示错误需安装此字体
- ArcGIS10.3ForServer.ecp破解文件
- Arcgis创建企业级数据库许可文件
- 基于envi、arcgis解译
- arcgis js api 加载天地图底图
- arcgis9.3到期破解更新文件2048
- 天津行政区划shapefile文件
- arcgis9.3到期破解更新文件(2048)
- arcgis api for js实现距离测量和面积测量
评论
共有 条评论