一、数据简介
传统的以二维平面展现网络数据的方式,在一定程度上限制了信息的表达,尤其是在复杂的空间位置关系上。三维网络是对现实中的网络的真实模拟,而非抽象模拟,因此能够全方位的展现信息。
例如,多层结构的建筑物内的通道数据(包括楼道、楼梯和电梯等),在二维显示上无法直观地区分各楼层的通道,而从三维视图上,则可以清晰直观地了解各个楼层的通道分布情况。再如,种类繁多且纵横交错的城市管网,仅通过二维数据难以清晰地表达管线的实际布设情况。二维数据中相交的两条管线,可能实际上并没有交叉,而只是架设的高度不同。而三维管网则能够直观的表达管线的布设、空间位置关系和拓扑关系。
二、数据格式介绍
管网数据一般情况都是通过勘探技术进行采集而来,采集到的数据存储在Excel表格或者.csv文件中,里面记录有各种信息,包含点号、埋深、管点类型、管线类型等等。
管线数据也可能是被导入其他GIS平台处理为空间数据后,导出的矢量文件,如ArcGIS生成的.shp数据。
三、数据处理
1、导入原始数据
将Excel、shp等格式的管网数据通过iDesktop导入到数据源做为三维点数据集三维线数据集,分别表示管点数据和管线数据。导入时有以下两个入口:
【开始】-【数据导入】-【电子表格】/【ArcGIS】
在【工作空间管理器】中,找到需要导入的目标数据源,选中该数据源右键在弹出的页面中点击【导入数据集】
导入数据以Excel表格为例。由于表格数据中不存储对象而是属性信息,此时导入进来时需要将表格数据转换为矢量点数据。在选择Excel文件后,需要勾选【导入空间数据】。并指定经纬度和高程对应的字段。
如果该Excel表存储的是管点数据,那么这个时候导入为三维点数据集就表示的是管点数据。
如果导入的Excel数据是管线数据,那么还需要将三维点数据集按照一定的规则转换为三维线数据集,该数据就表示的管线数据。转换功能入口:【数据】-【类型】-【类型转换】-【点->线】,着重需要设置参数【连接字段】和【排序字段】。
连接字段表示两个端点在是同一条管线上,从而连成一段管线。
排序字段表示这条线的一个流向,是从点A流向点B还是从点B流向点A
如果是shp格式数据,直接导入即可。
2、构建网络数据集
将导入的三维点、三维线数据构建制作管线数据的网络数据集。在iDesktop中,构建三维网络数据集有两种方式:
【构建三维网络数据集】功能可根据指定的三维点数据集、线数据集,或仅通过三维线数据集,生成三维网络数据集;
【自定义构建三维网络】适用于三维线数据集含有弧段 ID、弧段起始结点 ID 和终止结点 ID 的字段信息,三维点数据集含有点对象的结点 ID 字段信息时,生成三维网络数据集。两种构建操作步骤如下:
构建三维网络
操作步骤:【交通分析】-【路网分析】-【拓扑构网】-【构建三维网络】
源数据选择 :
在“结点数据”处选择参与构网的三维点数据集及其所在的数据源,注:三维点数据集可设置为空,仅通过三维线数据集进行构网。
在“弧段数据”处选择参与构网的三维线数据集及其所在的数据源。
结果字段:【结点保留字段】列表中列出了结点数据的所有字段信息,可通过复选框勾选参与构建网络数据集的属性字段;【弧段保留字段】列表中列出了弧段数据的所有字段信息,可通过复选框勾选参与构建网络数据集的属性字段。默认勾选所有字段。
打断设置
点自动打断线:勾选该复选框后,在容限范围内,线对象会在其与点的相交处被打断,若线对象的端点与点相交,则线不予打断。
线线自动打断:勾选该复选框后,在容限范围内,两条(或两条以上)相交的线对象会在相交处被打断,若线对象与另一条线的端点相交,则这个线对象会在相交处被打断。此外,勾选“线线自动打断”操作时,系统会同时默认勾选“点自动打断线”,即“线线自动打断”功能不可以单独使用。
打断容限:设置打断容限,这里的打断容限即结点容限,表示线对象与线对象、线对象与点对象之间的最小距离。
注意:用于构建三维网络数据集的数据必须具有相同坐标系,否则构建失败。
自定义构建三维网络
操作步骤:【交通分析】-【路网分析】-【拓扑构网】-【自定义构建三维网络】
- 结点数据:选择三维点数据集及其所在的数据源,同时设置结点数据的“结点标识字段”。
- 弧段数据:选择三维点数据集及其所在的数据源,并设置弧段数据的起始结点标识字段、终止结点标识字段、弧段标识字段。
- 结果设置:选择结果数据集所在的数据源,同时可修改结果数据集的名称。
注意:
用于构建三维网络数据集的数据必须具有相同的坐标系,否则构建失败。
结点数据的结点标识字段不支持选择 SmID,SmID 为系统字段,若结点数据数据有更新或复制,每天记录的 SmID 的字段值会有变化,若以该字段作为结点标识字段,则结点与弧段的关联关系也会发生变化,导致结点与弧段构建的网络数据集有错。弧段标识字段不会影响结点数据与弧段数据的构网情况。
自定义构网构建的网络数据集的弧段 ID、弧段起始结点 ID、弧段终止结点 ID 和结点 ID 字段,为设置参数时指定的字段,而不再是 SMEDGEID、SmFNode、SmTNode、SMNODEID 等系统字段。
3、新建符号/引入符号库
当构建三维网络数据集完成后,想要得到三维管线的效果,还需要用三维管线、管点符号去对数据进行符号化,在符号化前则需要保证工作空间中有对应的符号。在iDesktop中,提供导入符号库和新建符号两种方式,导入符号库的步骤为:打开工作空间管理器节点中【资源】-【点符号库】/【线型符号库】-【文件】-【导入点符号库】/【导入线型符号库】,然后选择对应的符号库文件导入即可。
当没有符号库文件,工作空间中没有符号时,则需要新建符号,新建步骤如下:
新建管线符号
操作步骤: 【工作空间管理器】 - 【资源】-【线型符号库】-【编辑】-【新建三维线型】
【截面列表】选择圆形截面,设置【线宽】、【线颜色】后,修改【符号名称】等信息; (注:绘制界面的网格单位为:cm)
新建管点符号
在iDesktop新建三维点符号中,根据使用场景的不同,可分为以下两种:
- 【自适应管点】符号适用于场景中的弯头、三通、四通等管点与管线的匹配问题
- 【三维点符号】适用于部分特殊特征点、井和附属设施,两者新建符号的具体方式如下:
新建三维符号:
操作步骤:【编辑】-【新建符号】-【新建三维符号】
点击“设置模型”按钮,弹出“打开”对话框,选择一个自制模型文件(*.sgm 或 3ds 文件),并确定打开; 设置“缩放比例”和“转角度”,可使用默认数值;修改“符号名称”后,单击“设置快照”按钮,设置符号的快照图片,点击“确定”即可完成三维点符号的新建。
新建自适应管点符号:
操作步骤:在【工作空间管理器】的【资源】双击【点符号库】或右键选择【加载点符号库】,打开【点符号选择器】对话框;
【编辑】-【新建符号】-【新建三维自适应管点符号】
注:参数设置
端部厚度:表示管点符号的箍的长度,当设置该参数值为“0”时,表示该符号不带箍;
转角细分数:表示管点符号弯头的平滑度,数值越大,弯头效果越平滑。
4、符号化网络数据集
构建网络数据集完成后,将网络数据集添加到场景中仍然是矢量数据的显示效果,需要得到管线、管点的模型效果,则要对网络数据集进行符号化。在iDesktop中,有两种符号化方式:专题图符号化适用于网络数据集的线数据中和节点数据中已经存入了与之相对应的如管点符号ID、管线符号ID、管线符号宽度等 管线/管点符号字段;自适应管点则适用于场景中有弯头、三通、四通等复杂管点时,系统可以根据结点与弧段的拓扑信息,结点自动生成生成与管线相接的弯头、三通、四通等管点符号。两种方式具体操作步骤如下:
专题图符号化
操作步骤:
打开网络数据集属性表(节点、线),确认符号相关字段,确认资源库中已存在所需符号
将三维网络数据集添加入场景,得到两个图层,分别为节点图层和线图层
对节点图层和线图层分别制作自定义专题图(选中图层右键单击- 【制作专题图】-【自定义专题图】)
打开自定义专题图操作面板,设置符号
管点专题图:选中图层右键单击 - 【修改专题图】- 打开专题图面板 - 根据需要设置符号风格、符号颜色、符号大小等字段
管线专题图:选中图层右键单击 - 【修改专题图】- 打开专题图面板 - 根据需要设置线型风格、线型颜色 、线型宽度字段
刷新场景:在场景中右键单击,选择【刷新】
自适应管点
操作步骤 :
将构建管线数据的网络数据集添加到场景
在图层管理器中,分别选中三维网络数据集的管线和管点图层,在“风格设置”选项卡中,设置图层 “高度模式”为绝对高度,如果数据来源于地下,设置“数据来自”为地下。
设置管线符号,右击图层,选择【图层风格】,设置管线符号,刷新场景即可,结点已自动生成与管线相接的弯头、三通、四通等管点符号
5、生成三维缓存
在进行符号化完成之后,在SuperMap iClient3D for Cesium进行使用前,需要先在SuperMap iDesktop切缓存,具体操作步骤如下:
保存场景:在符号化完成之后,保存场景;
生成缓存:在工作空间管理器中,右键单击保存的场景,选择【生成场景缓存】。
注意:管点采用的是【点外挂模型生成缓存】的方式生成缓存,所以如果未勾选【点外挂模型生成缓存】,则生成的缓存无管点符号。
点外挂生成模型缓存:场景中具有相同材质、形状以及大小但仅空间位置和姿态不同的模型,采用模型只存一份,位置信息采用三维点数据集存储的方式存储多个模型数据集的模型,减少空间占用和数据量。
6、SuperMap iClient3D for Cesium加载服务
方式一:以场景方式加载
viewer.scene.open('http://localhost:8090/iserver/services/3D-testbeijing-2/rest/realspace')
方式二:以图层方式加载
viewer.scene.addS3MTilesLayerByScp('http://localhost:8090/iserver/services/3D-testbeijing-2/rest/realspace/datas/Pipeline/config',{
name:'Pipeline'
})
笔者:wzr