SuperMap iObject入门开发系列七管线横断面分析

本文是一位好友“托马斯”授权给我来发表的,介绍都是他的研究成果,在此,非常感谢。

管线横断面分析功能是管线系统常见的一个分析功能,地下管线横断面分析的原理,是根据需求,在管线区域画一条横截面线,使其与地下管线相交,根据相交情况获得地下管线改交点的横截面和埋深等信息,并画图显示出来,结果界面图:

具体功能实现思路:

  • 首先进行横截面线的绘制,这里依然是使用Action3D.MeasureDistance测量工具进行画线,画线结束后,我在这里将绘制的线获取分别生成三维线数据集和二维线数据集,其中三维线数据集用于生成图层进行展示,二维线数据集用于后面和管线求交等一系列计算。下面贴出创建三维数据集和生成图层的部分代码。

核心代码如下:

前面的准备工作完成后,就开始进行核心部分的代码编写。我们先理一理整个思路,我们最后要获取的东西是管线的横截面图,这就涉及到我们画的横截面线和管线交点位置的埋深和管径,管径可以直接从管线数据集获取,交点埋深则要通过计算了。这里讲解一下交点埋深的计算方法,首先计算得到交点的坐标(Xi,Yi),获取管线的起始坐标(X0,Y0),终止坐标(Xt,Yt),起始埋深H0,终止埋深Ht。我们要求的交点埋深Hi。如下图所示:

D1为起始点到终止点的距离,计算公式如下:

D2为起始点到交点的距离,计算公式如下:

图中标蓝的两条为D1,D2,标红的两条为S1,S2。则有D2:D1 = S2:S1,其中D1,D2已知,S1为Ht-Ho,从而我们可以得到交点的埋深Hi

Hi=Ho+S2= Ho+(D2/D1)*S1=Ho+(D2/D1)*(Ht-Ho)

计算公式如下:

核心代码如下:

  • 最后将计算结果,结合管径,管线颜色等数据信息,展示成图。这里用的是Bitmap对象进行保存绘制的横断面等,结合Graphics类对象设置画笔颜色等进行绘图。代码比较繁琐,这里就不贴出来。

管线横断面功能核心部分为交点埋深的计算,计算中采用获取二维的横断面线和二维的管线数据集进行一系列计算,将三维的直观可视化和二维数据计算便捷快速结合起来。其他一些绘图功能比较简单,此外还需添加一些点击闪烁功能,表格展示数据的功能,使其更加完整。在功能开发过程中也需要注意一些细节,例如管线有圆管和方管的区分,圆管直接获取管径字段信息即可,方管则要进一步解析。在管线数据字段中还要添加一个字段进行颜色信息的存储,并与制作图层同一颜色,方便绘制横断面时候的颜色获取等等。

好友“托马斯”技术交流QQ:519926200

作者: GIS之家

GIS之家微信号:gishome;GIS之家拥有自己的GIS开发团队,均是高校GIS研究生,具备丰富的webgis开发项目工作经验,专注以及热爱研究webgis技术的团队

发表评论

电子邮件地址不会被公开。