sw二次开发 python_GIS(python)+SWWM城市雨洪管理

该博客介绍了如何利用Python结合GIS工具(如ArcGIS)进行SWWM(城市雨洪管理)的二次开发。通过数据交互,计算流域范围、坡度、坡向、高程等参数,生成SWWM计算文件,并分析开发前后径流系数,最终在GIS平台上进行结果可视化。
摘要由CSDN通过智能技术生成

用python编写SWWM与ArcGIS平台的数据交互文件,通过GIS计算分析区域下流域范围,以及坡度、坡向、高程、不透水面积及地表径流等数据,生成SWWM计算文件,计算开发前后径流系数,并将计算结果调回GIS平台可视化。

Loading...

code:

import arcpy

from arcpy import env

from arcpy.sa import *

import time

#original_para

worksapce_path="D:\SWMM_cal"

original_dem="D:\SWMM_cal\gdem_m_P.tif"

extent_region="D:\SWMM_cal\extent_region.shp"

fla_para=500

research_region_polygon="D:\SWMM_cal\\research_region_polygon.shp"

imperv="D:\SWMM_cal\imperv.tif"

Gage_1="D:\SWMM_cal\Gage1.shp"

#environment

env.workspace=worksapce_path

env.overwriteOutput=True

env.extent=extent_region

#Hydrology_basic

fill_dem=arcpy.sa.Fill(original_dem)

flowdirection_dem=arcpy.sa.FlowDirection(fill_dem)

flowaccumulation_dem=arcpy.sa.FlowAccumulation(flowdirection_dem)

flowaccumulation_dem_copy=arcpy.CopyRaster_management(flowaccumulation_dem,"flowaccumulation_dem_copy.tif") #?

overland_flow=arcpy.sa.Con(Raster("flowaccumulation_dem_copy.tif")>float(fla_para),1) #how to solve?

stream_link=arcpy.sa.StreamLink(overland_flow,flowdirection_dem)

watershed_r=arcpy.sa.Watershed(flowdirection_dem,stream_link)

watershed_polygon=worksapce_path+"\watershed_polygon.shp"

arcpy.RasterToPolygon_conversion(watershed_r,watershed_polygon,"SIMPLIFY","VALUE")

clip_watershed_p=arcpy.Clip_analysis(watershed_polygon,research_region_polygon)

flowlength_d=FlowLength(flowdirection_dem,"UPSTREAM")

#extract subwatershed

def extract_subwatershed(clip_watershed_p,watershed_polygon):

ID_lst=[]

cursor=arcpy.da.SearchCursor(clip_watershed_p,'ID')

for row in cursor:

ID_lst.append(row[0])

del cursor,row

p_select=[]

cursor=arcpy.da.SearchCursor(watershed_polygon,['ID','SHAPE@'])

for row in cursor:

if row[0] in ID_lst:

p_select.append(row[1])

del cursor,row

p_s=arcpy.CreateFeatureclass_management(worksapce_path,'p_s',"POLYGON")

arcpy.AddField_management(p_s,'ID_name',"FLOAT")

cursor=arcpy.da.InsertCursor("p_s",['SHAPE@','ID_name'])

for i in range(len(p_select)):

cursor.insertRow([p_select[i],ID_lst[i]])

del cursor

return p_s

p_s=extract_subwatershed(clip_watershed_p,watershed_polygon)

#SWMM_para

Area_lst=[row[0] for row in arcpy.da.SearchCursor(p_s,['SHAPE@AREA'])]

zonal_flowlength=ZonalStatisticsAsTable(p_s,"FID",flowlength_d,"zonal_flowlength","NODATA","MEAN")

zonal_flowlength_lst=[row[0] for row in arcpy.da.SearchCursor(zonal_flowlength,["MEAN&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值