回 帖 发 新 帖 刷新版面

主题:[讨论]计算复杂河床断面面积的VBA程序

有如图附件所示的河床断面,图中红线为其水位,需要计算其河宽、过流断面的面积等量。初步计划用分块求和的方式求其面积,河宽根据水面线与断面交点的差得到。对于简单的河床断面,这种算法是容易实现的,宽度直接根据两个交点相减就行,面积加和(左右两个三角形+中间的若干梯形)也能求出;但对于复杂的断面,如图,有些交点是我不想要的,如最后一个交点,另外,红线与断面围住的小面积也是我不想要的,请问在这种情况下如何编程实现,特别是在断面很多,不方便对断面测点进行处理的时候?
望高手们不吝赐教!!

回复列表 (共5个回复)

沙发

不知道你是想根据这个图来计算,还是根据绘制这个图时的数据来计算。不过,首先要解决的不是编程的问题,而是在数学上如何求解的问题。

板凳

这个问题涉及到水工专业的问题,楼主可能和我是同行

比如计算天然河道水面线
需要对不同水位高程进行试算,对每个高程都需要进行楼主所言的计算或内插
包括过水面积、湿周、水力半径等
而河道断面的实测数据点数是不确定的
再复杂的还有河汊
我曾经也想着编水面线程序,让程序根据实测数据点自动计算
但最终放弃了这个方案
如果只是简单的计算面积,那么同楼上的专家看法一样,关键是数学算法的问题
如果楼主要搞一个水工专业的程序,希望能和你探讨,我QQ 12400654

3 楼

是应该不难。
1、实测点的布置。一般对于相对平坦的布点较稀,对变化较大的布点较稠。使用直线差值发,基本一般不点都能满足要求。
2、数据格式。从一边河床高漫滩为起点,每组数据为“水平距离,高程(或相对高程,但要统一)”
3、指定水位。使用同数据已知的高程体系。
4、最复杂的就是过水与不过水的判定。这部分,你必须给出一定的数学准则。否则就得人工指定(人工指定实际就是没有明确的数学准则情况下的人机交互方案)。

有了上述假设,问题就好办了。
程序基本流程是:
1、读取数据
2、绘图
3、过水域判定(或指定)
4、积分(含插值)
5、输出。

4 楼

不好意思!看错了,以为你要的是vb呢,原来是vba,那么我…………

5 楼

谢谢楼上的回答~~我再好好琢磨琢磨

我来回复

您尚未登录,请登录后再回复。点此登录或注册