首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【SM iClient3D】如何处理地下管线数据

使用背景

如今三维GIS越来越受到大家的关注,也越来越多的使用在GIS的项目中。三维地下管线就是一个重要的使用方面。而大家拿到的数据往往是简单的管点数据和管线数据,因为管线的接头处与管点是有对应关系的,并不能简单的直接进行显示,在SuperMap Objects .NET的范例代码中为大家提供了三维管线的范例代码,如何可以让已有的数据通过范例代码进行显示呢?下面就为大家介绍如何处理已有的数据,将其可以通过范例代码来显示。

*注:范例代码针对普遍的管线数据,但由于项目的具体数据不同,具体情况需要具体对待。

准备工作

SuperMap Objects .NET,SuperMap iDesktop ,

管点,管线数据。

SuperMap Objects .NET 范例代码:Symbol3DDisplay

数据处理

1. 导入数据集

通常项目中拿到的数据是CAD的数据,需要以简单的数据形式导入到数据源中,如果已经导入,则不需要这一步,操作见图一

2. 创建网络数据集

使用SuperMap iDesktop ,将已有的管线和管点数据创建网络数据集,需要保存点/线的数据集的全部字段,创建时需要用管点打断线,而不可以线线自动打断,因为是二维的线,看起来相交的线可能在空间中并不相交。如图二:

图二 创建网络数据集

创建的网络数据集由线/点两部分组成,线数据会产生两个字段,SmFnode,SmTNode这两个字段,分别与线两端点的SmNodeID相对应,体现了网络数据集点和线的拓扑关系。

3. 保存属性字段值

最终进行显示的是管点数据集和管线数据集,网络数据集只是为了获得点线之间的拓扑关系,因此,还需要经网络数据集转成点数据集和线数据集。转换得到的线数据集需要保留网络线数据的SmFnode,SmTNode,点数据集需要保留网络点数据的SmNodeID。默认的网络数据集转点/线数据集无法保留网络数据集的系统字段SmFnode,SmTNode,SmNodeID,因此在转换之前,需要新建字段,将这几个需要保留的系统字段保存在新建的字段中。为了和Symbol3DDisplay 代码中的字段名同一,需要将SmFnode字段保存在新建的FNode字段中,SmTNode保存在ENode字段中,SmNodeID保存在PtID字段中。具体的字段可以根据项目修改,但需要改动代码中相应的位置。如图三,图四。

4. 网络数据集转点/线数据集

保存了属性后的数据可以直接换成点/线数据集,数据集中默认保存网络数据集的全部非系统字段。如图五。

5. 转换为三维数据集

因为管线大多是有自身的高程值,按照每根管线不同的高度值进行显示,因此需要将二维的点线转换成三维的数据,转换是需要指定转换的高程字段值。见图六。

如此处理,即可得到最终的管点/管线数据,但如要在Symbol3DDisplay范例代码中进行显示,仍需要修改具体的数据集名,调整显示的风格,以达到要求。显示效果如下图。

*注意:

最终显示的数据是经过网络数据集转换而得的具有拓扑关系的点/线数据集。转换后的点数据集中每一个点都有一个唯一的PtID与之对应,线数据集则都有FNode,ENode两个字段,且这两个值都与线两端点对象的PtID相对应。因此,处理完成的点线数据集不可做添加,删除,编辑等操作,否则会导致显示效果有误。

Cesium 基础系列

END

请:右下点在看,右上点【···】分享

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200516A0466Y00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券