如何寻找等斜率的多段线
本帖最后由 天天问 于 2025-1-12 17:03 编辑在地形图上有2个点,记为A1、A2。
地形图上,等高线(也就是多段线)的高程以其“标高”数值为准。
需求:作一条起点为A1、终点为A2的多段线,起点和终点之间有数量不等的多段线顶点,顶点的数量取决于多段线的精度。多段线上任意一点的高程值(也就是标高值)根据相邻2条多段线的标高值经插值计算确定,也就是说多段线的每个顶点都可以经插值计算得到一个标高值。以上所得的多段线满足:将多段线展开放到平面坐标系中,X轴表示多段线的顶点距离起点的曲线长度,纵坐标表示顶点的标高,则展开的线为一条斜线(受精度影响,其实是一条近似直线的曲线)。
实际工程情况:有一系列的点,例如A1、A2、A3、A4、A5,最终需要分段计算得到A1-A2、A2-A3、A3-A4、A4-A5,每个分段的多段线都满足上述条件,相邻分段的多段线斜率一般不相等。
最后再举一个例子模拟我的需求:在一片山坡上(等高线就是用来反映实际地形的),有两个点A1、A2,两个点的高度不一样(例如A1在山腰,A2在山顶),现在要在山坡表面寻找一条轨迹,以A1为起点,A2为终点,轨迹沿途就需要一直上坡,但坡度保持不变。
备注:
1.需求是得到满足要求的多段线就行,后面说的把多段线展开到平面坐标系中,是为了补充说明多段线的效果。
2.我这个问题是土木行业的,非土木行业的人士可能不好理解我的需求。我举个简单的例子辅助说明:连接A1、A2的多段线跨越了n根等高线,如果这n根等高线满足“相邻等高线的标高的差值均相等”,那么这n根等高线可以把A1-A2多段线截取为n-1个分段(不含首尾的2个分段),那么这n-1个分段的长度也相等。
3.自我感觉,这个问题的挑战在于:如何计算最终得到的多段线的长度。这个结果可能不是一次性得到,而是经过试算得到。因为:没有最终的总长度,就无法确定说多段线全线的斜率一致。
本帖最后由 llsheng_73 于 2025-1-13 13:10 编辑
天天问 发表于 2025-1-12 16:41
大师,我是土木行业的,这个问题想清晰地表达给其他行业人士听懂,有点困难。您这个箭头基本表达出了计算 ...
只要能完成对A1A2连线的中点p改算,使之满足a1p,pa2斜率相等,就可以一直这样进行下去得到最终的结果。
改算过程大致如下:计算两点中点p,检查斜率,一般情况这个平面位置高程不等于两点高程平均值h,所以斜率不相等。过p作连线的近似垂线l(过p与标高最大和最小这两条等高线的交点距离最大),在l上找到高程为h的点。
通过不断增加点,反复上边的过程,直到所有相邻点间高差小于基本等高距并且斜率相等
但是由于等高线疏密是不等的,有时相差较大,这个思路很可能行不通(有可能根据a1a2平面中点根本找不到其高程平均值h,这个时候前边的思路就这完蛋了),特别是A1A2连线近似垂直于等高线的情况很容易出现这个问题
另一个思路是先计算出A1,A2到各自最近等高线的距离,及相邻等高点间最大距离,然后从A1开始以这个斜率往A2方向在其最近的等高线上找到这个点,这样一直到距离A2最近的等高线上的点p,但这个时候pA2的斜率与前边其它线段的斜率是不相等的,然后应该怎么修正这个斜率重新计算呢?直接把差值加上去重新计算从A1开始,最后能不能得到符合要求的结果?
后边又想了一下,感觉通过在两条等高线之间内插指定标高的间曲线,然后在线上找到指定要点平面距离相等的点以保证斜率一致,应该可以直接求解,只是内插的次数相对较多,而内插曲线相对来说计算量较大,但能一次求解
1.用A1A2通过F方式选择相关等高线并按标高排序,再追加相邻等高线得到等高线数据表hs((标高1 曲线1)...(标高n 曲线n));
2.用A1A2构建初始点表pts(list A1 A2)并按高程排序,设置初始变量i=0
3.对pts进行while循环处理(结束条件为i=(length pts)
3.1在表中取第i点p1和i+1点p2计算平均高程h
3.2在hs中找到和h最接近的两条线(a,b),在a,b间计算内插曲线c并追加到hs并保持按标高排序的特征,记录c到内插曲线图元表s2(内插曲线1)
3.3在c上找出点p,使p1p和pp2平面距离相等
3.4如果p1p与p1p2斜率相等,i=i+1,否则将p插入到pts并保持pts按高程排序的特性
4.根据s2删除所有内插曲线
5.返回pts
两曲线间内插曲线的精度直接影响计算结果
本帖最后由 llsheng_73 于 2025-1-12 14:53 编辑
天天问 发表于 2025-1-12 09:25
相邻的2个点(比如A1、A2)之间,可能有几根等高线。目标是用多段线连接A1、A2,多段线均匀跨越A1、A2之 ...
相当于要以A1为起点,A2为终点,修一条水沟?
大概这么个意思?应该有无数多种画法,估计还得约束条件,比如坡比相等且最短或者限制坡比什么的,具体说不好,没弄过 llsheng_73 发表于 2025-1-12 09:40
相当于要以A1为起点,A2为终点,修一条水沟?
大概这么个意思?应该有无数多种画法,估计还得约束条件 ...
大师,我是土木行业的,这个问题想清晰地表达给其他行业人士听懂,有点困难。您这个箭头基本表达出了计算的结果。问题里约束条件已经全部提出来了,可能非土木行业有点不好理解我这个需求。 条件1:
A1...这些点不在等高线上面.
那么就是按A1点最近的,左右等高线比值,确定此处标高.
目标是画出一条多段线.
沿着等高线? 你有种再说一遍 发表于 2025-1-11 20:48
条件1:
A1...这些点不在等高线上面.
那么就是按A1点最近的,左右等高线比值,确定此处标高.
相邻的2个点(比如A1、A2)之间,可能有几根等高线。目标是用多段线连接A1、A2,多段线均匀跨越A1、A2之间的几根等高线。
谢谢大师 貌似以前在测绘板块也见过类似的 本帖最后由 gzxl 于 2025-1-12 19:28 编辑
看断面图每段之间(如 A1-A2 A2-A3 A3-A4 )的斜率好像不一样的,上面又说需要多段线全线的斜率一致?
其实我的理解就是指定起点和终点(含高程值),然后按(斜率一致、顶点的数量)原则找出一条轨迹线。
gzxl 发表于 2025-1-12 19:22
看断面图每段之间(如 A1-A2 A2-A3 A3-A4 )的斜率好像不一样的,上面又说需要多段线全线的斜率一致?
其 ...
每个分段的斜率是固定的,但不同的分段斜率又各不一样。 gzxl 发表于 2025-1-12 19:22
看断面图每段之间(如 A1-A2 A2-A3 A3-A4 )的斜率好像不一样的,上面又说需要多段线全线的斜率一致?
其 ...
应该是A1A2,A2A3...AnAn+1间各自有很多点,由于这些点在各自分段内斜率相同,它们对剖面图的形状是没有影响的,所以剖面图上没有表示它们
页:
[1]
2