ArcGIS水网密度——以北京为例

欢迎关注个人WX_GZH: 小Rser

ArcGIS水网密度——以北京为例https://mp.weixin.qq.com/s?__biz=MzkyNjMzNTQ2Mw==&mid=2247483733&idx=2&sn=667ed4ad7bd18dde29a81c0a48531b28&chksm=c239a9ddf54e20cb50d679d02af6ad1822a153f03e351821dcbaa1f59e234ddbaac7e778feff&token=2086761678&lang=zh_CN#rd

创建渔网

01 坐标系转换

查看北京市矢量shp的空间参考坐标系。如果是投影坐标系,则不需要投影转换,否则需要做一步投影转换。如图所示为地理坐标系(WGS1984)。

shp矢量投影转换步骤:单机Toolbox—Data Mangement Tool—Projections and Transformations—Feature—Project,打开矢量转投影界面。打开界面后如下配置,这里将矢量转换投影到Albers坐标系下。

02 创建渔网格网

1)创建一个大于北京市四至范围的矩形面shp,请记得编辑矢量后保存,并关闭编辑。

2)接下来创建格网。

3)几个重要参数的设置(这里选择1km的格网)

河网水系数据处理

01 裁剪河网水系数据

利用上面建立的北京四至shp裁剪1:25万河网水系矢量数据(其他比例的河网水系一样),裁剪前确认两个文件的坐标系是否一致。如果这里坐标系不一致,我通常采用的方法,将用于裁剪的数据(北京四至矢量)转换到水系矢量坐标系下,裁剪出结果,在将裁剪后水系数据坐标系转换到原裁剪矢量的坐标系(Albers)。

水网密度计算

01 相交处理

创建之前首先对格网矢量添加id字段,然后找到Analysis Tools—Intersect工具,将两者相交。(ALbers坐标系下水系数据和渔网数据进行相交),主要是标记每个网格中的河网。对相交结果属性表,新建属性列Length。

右击id属性列,选择Summarize进行分组统计,对Length列进行求和分组统计。其中id为渔网的id,id值相同的为渔网中的同一个网格,基于id列进行分组统计获得的即为网格内的河网总长度,生成.dbf文件。

join连接

右击渔网图层,连接表格,以id列进行join连接。连接后的属性表如下。

新建属性列Area,右击属性列➡计算几何➡计算面积,单位选

新建属性列Area,右击属性列➡计算几何➡计算面积,单位选平方千米。

新建属性列density,右击属于列,字段计算,Sum_Length/Area,得到水网密度。

水网密度裁剪及结果出图

01 数据裁剪结果

02 矢量栅格化和出图

### 使用 ArcGIS 进行 DEM 数据分析以计算河网密度 #### 准备工作 为了确保后续水文分析的准确性,需要先对原始DEM数据进行预处理。这包括去除其中存在的凹陷点,因为这些地方会干扰水流路径的真实模拟[^1]。 ```python import arcpy from arcpy.sa import Fill # 设置环境变量 arcpy.env.workspace = "C:/data" inRaster = "raw_dem.tif" # 执行填充操作移除凹陷区域 filled_raster = Fill(inRaster, "") filled_raster.save("fill_dem.tif") ``` #### 流向与流量分析 完成DEM预处理之后,下一步就是执行流向分析来确定每个像元内的水流方向。此过程同样依赖于经过洼地填平后的DEM作为输入源,并运用`Flow Direction`工具实现这一目标[^2]。 ```python from arcpy.sa import FlowDirection # 基于填充后的DEM计算流向 flow_direction = FlowDirection(filled_raster, "NORMAL") flow_direction.save("flow_dir.tif") ``` 随后,还需要评估累积流量——即有多少水量汇聚到特定位置,这对于识别潜在河道至关重要。通过应用`Flow Accumulation`功能可达成该目的[^3]。 ```python from arcpy.sa import FlowAccumulation # 计算累计流量 accumulated_flow = FlowAccumulation(flow_direction) accumulated_flow.save("accu_flow.tif") ``` #### 提取矢量河流网络并计算长度 当拥有了精确表示水流路径的信息后,则可以根据设定阈值转换成二进制形式(有流/无流),进而转化为矢量化表达方式以便进一步测量实际线性距离。具体做法是利用条件判断语句将超过一定流量限值的部分标记出来形成初步河网轮廓,再经由栅格转面或线要素命令获取最终结果[^4]。 ```python from arcpy.sa import Con, RasterToPolylineConversion threshold_value = 1000 # 自定义阈值参数 river_network = Con(accumulated_flow >= threshold_value, 1) # 将符合条件的栅格单元转换为多边形特征类 output_polyline_features = "rivers.shp" RasterToPolylineConversion(river_network, output_polyline_features, "", "SIMPLIFY", "NO_SIMPLIFY") # 获取总长度 with arcpy.da.SearchCursor(output_polyline_features, ["SHAPE@LENGTH"]) as cursor: total_length = sum([row[0] for row in cursor]) print(total_length) ``` 最后一步则是统计整个研究区内所有被认定为河流部分的空间范围之和,从而得出所谓的“河网密度”。它反映了单位面积内存在多少公里长的人工界定‘河流’分布情况。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亿份资料

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值