同一河段不同断面宽度的提取与处理方法

Posted by WT on February 24, 2025

问题

如下图的河道,TKHN-0 和TKHN-1000处的两个断面同一宽度不合适,但如果分为两个河段会使得模型破碎。 如何通过断面提取程序结合GIS软件修改数据,使得不同位置的断面宽度不同? GF1

思路

GF1

我们使用的断面提取软件只能设置一个宽度,如果需要设置多个宽度,需要多次修改宽度,基于某个宽度的xls文件修改断面信息,组合生成新的河段断面序列。这个断面提取软件很好的一点在于输出目录中的文件夹如果不存在,程序会自动创建

GF1

方法

首先绘制河道的中心线,绘制时注意河流拐弯处需要加密绘制点,保证生成断面时断面垂直于事实上的河道。
其次,绘制中心线时,我认为应该按照河道实际的形状绘制(确保设置的断面宽度是平均分配的,而不是靠近一侧的河堤,远离另一侧的河堤)而不是按照影像地图上有水的河道绘制。 绘制完毕后利用断面提取软件多次提取断面,我们使用了宽度400m,600m和700m三个值。
每次生成的结果包含两个Excel文件和一个SHP文件,SHP文件用于QGIS中渲染,判断宽度是否合适。两个Excel存储了河段中心线(河段.xlsx)和断面左右岸及每个断面离散点的点距和Z值(TKHN.xlsx)。

我们放大了第一张图的断面(生成的SHP数据),如下图所示,RGB三个颜色的线代表着同一个断面三个不同宽度的结果。通过这个图可以初步判断断面宽度是否足够。

GF1

第二步,使用自己编写的代码(判断断面是否正常.ipynb)绘制 根据每个断面离散点数据(TKHN.xlsx中的断面形状sheet)表,绘制每个断面的曲线,用程序判断是否是一个完整的断面。判断方法,先寻找最低点,然后在最低点的左右岸寻找高值点,确定的左右岸的堤顶,然后判断左右岸的堤顶与河底最低点的差值,是否在一定的阈值内,在则说明不符合河道要求,需要替换为更宽的数据。

GF1

确定需要更换宽度的断面后,打开对应的xlsx文件,河段.xlsx不需要修改,因为中心线没有变化。但TKHN.xlsx需要修改。

1、TKHN.xlsx中要把断面属性中的左右岸坐标替换为增加宽度后的断面左右岸坐标。

GF1

2、修改对应断面的起点距和Z值,注意当断面宽度扩充时,其起点距地行数也会发生变化,需要根据实际情况先插入足够的空白列,再复制粘贴对应的断面数据

GF1

3、修改完毕后,将修改后的数据导入IFMS,就生成了一个包含不同断面宽度的河段。

GF1