明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 343|回复: 15

[讨论] 如何寻找等斜率的多段线

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 天天问 于 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.自我感觉,这个问题的挑战在于:如何计算最终得到的多段线的长度。这个结果可能不是一次性得到,而是经过试算得到。因为:没有最终的总长度,就无法确定说多段线全线的斜率一致。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 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
两曲线间内插曲线的精度直接影响计算结果
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
本帖最后由 llsheng_73 于 2025-1-12 14:53 编辑
天天问 发表于 2025-1-12 09:25
相邻的2个点(比如A1、A2)之间,可能有几根等高线。目标是用多段线连接A1、A2,多段线均匀跨越A1、A2之 ...

相当于要以A1为起点,A2为终点,修一条水沟?

大概这么个意思?应该有无数多种画法,估计还得约束条件,比如坡比相等且最短或者限制坡比什么的,具体说不好,没弄过

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
llsheng_73 发表于 2025-1-12 09:40
相当于要以A1为起点,A2为终点,修一条水沟?

大概这么个意思?应该有无数多种画法,估计还得约束条件 ...

大师,我是土木行业的,这个问题想清晰地表达给其他行业人士听懂,有点困难。您这个箭头基本表达出了计算的结果。问题里约束条件已经全部提出来了,可能非土木行业有点不好理解我这个需求。
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
条件1:
A1...这些点不在等高线上面.
那么就是按A1点最近的,左右等高线比值,确定此处标高.

目标是画出一条多段线.
沿着等高线?
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
你有种再说一遍 发表于 2025-1-11 20:48
条件1:
A1...这些点不在等高线上面.
那么就是按A1点最近的,左右等高线比值,确定此处标高.

相邻的2个点(比如A1、A2)之间,可能有几根等高线。目标是用多段线连接A1、A2,多段线均匀跨越A1、A2之间的几根等高线。
谢谢大师
回复 支持 反对

使用道具 举报

发表于 3 天前 来自手机 | 显示全部楼层
貌似以前在测绘板块也见过类似的
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
本帖最后由 gzxl 于 2025-1-12 19:28 编辑

看断面图每段之间(如 A1-A2 A2-A3 A3-A4 )的斜率好像不一样的,上面又说需要多段线全线的斜率一致?
其实我的理解就是指定起点和终点(含高程值),然后按(斜率一致、顶点的数量)原则找出一条轨迹线。
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
gzxl 发表于 2025-1-12 19:22
看断面图每段之间(如 A1-A2 A2-A3 A3-A4 )的斜率好像不一样的,上面又说需要多段线全线的斜率一致?
其 ...

每个分段的斜率是固定的,但不同的分段斜率又各不一样。
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
gzxl 发表于 2025-1-12 19:22
看断面图每段之间(如 A1-A2 A2-A3 A3-A4 )的斜率好像不一样的,上面又说需要多段线全线的斜率一致?
其 ...

应该是A1A2,A2A3...AnAn+1间各自有很多点,由于这些点在各自分段内斜率相同,它们对剖面图的形状是没有影响的,所以剖面图上没有表示它们
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-1-15 20:01 , Processed in 0.221646 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表