问题如题。
首先上图为通过界面“土木分析”→“测点分析”功能求得的道路路线曲线段上某点的坡度,为-3.2%,对应的角度即-1.832839506°
下图为通过代码获取的该点的切线角度,为-0.8448665°
通过确认,通过软件原生功能获取的坡度是正确的纵断坡度,代码获取的切线角度为错误的,代码获取切线角度的过程如下:
Alignment align = Alignment.CreateFromElement(new ConsensusConnection(modelRef), eleAlign);//以上代码从属性中拿到路线 if (align==null || align.ActiveProfile==null) { continue; } LinearPoint lPt = align.ActiveProfile.ProfileGeometry.GetPointAtDistanceOffset(360.12931613051035, 0);
该问题在纵断面的圆曲线段会出现,在直线段两种方式获取的坡度是一样的。
麻烦请确定该问题的原因。
【问题补充】:注意看,我的代码实际在360.129桩号处获取的纵断上的点,但实际获取到的点的坐标是356.672456,我想问题是出在这里,请问是怎么回事呢?下图可见我的纵断是从0,0点开始绘制的。
test纵断切线角度.dgn
已经转给ORD开发技术支持工程师了,请耐心等待!
您好!
GetPointAtDistanceOffset函数作为基类中的函数,在计算平面几何时是适用的,但是在纵断面中会有问题。
如果求坡度,可以使用ProfileElement类中的函数GetSlopeAtX函数,尽量不要使用基类中的方法。经过我测试,GetSlopeAtX函数返回数据能和“测点分析”能对应得上的。如下图所示:
Answer Verified By: 霄男 宿
ok,我目前是采用GetPointAtDistanceOffset通过求3d线相邻2点的高程,然后自己反算正切值来解决的。希望官方尽快修复求纵断线调用GetPointAtDistanceOffset代码的问题
GetSlopeAtX是纵断面最直接的方法,建议不要用GetPointAtDistanceOffset。
GetPointAtDistanceOffset求解纵断面上的点,毕竟是个bug,建议官方尽快修复,因为以后可能还有其他需求可能用的到