SuperMap iObjects .NET 8C技术文档 ——三维管线

作者:博哥

北京超图软件股份有限公司
中国•北京

目录

1. 概述

1.1 三维管线场景的组成

2. 构建三维网络数据集

2.1 组件产品构建三维网络数据集

2.2 桌面产品构建三维网络数据集

2.2.1 构建三维网络
2.2.2 自定义构建三维网络

3. 加载三维网络数据集

4. 新建三维管线、管点符号

4.1 新建自适应管点符号

4.2 新建三维线型符号

4.3 新建三维点符号

5. 构建三维管线场景

5.1 三维管线的构建

5.1.1 使用一种管线符号
5.1.2 使用多种管线符号

5.2 三维管点的构建

5.2.1 使用一种管点符号
5.2.2 使用多种管点符号

常见问题

1) 为什么自适应管点显示不出来?

2) 为什么场景中不显示管网数据?

3) 为什么在管线场景中鼠标稍微一拖动,管线大块大块的消失?

4) 为什么设置的圆管看起来不圆?

5) 怎么提高管线场景的渲染性能?

6) 构建三维网络数据集时出现点丢失或构建结果明显错误情况?

1. 概述

  地上地下各类管网、管线是一个城市重要的基础设施,它不仅具有规模大、范围广、管线种类繁多、空间分布复杂、变化大、增长速度快、形成时间长等特点,更重要的它还承担着信息传输、能源输送、污水排放等与人民生活息息相关的重要功能,也是城市赖以生存和发展的物质基础。
  随着我国城镇化进程的不断深入,传统的二维管理模式已根本无法满足对管网、管线大数据信息分析、表达、应用的实际需要,三维管线管理逐渐替代二维管理模式。二维系统只有点、线表示管网,系统建设成本并不高,但是在三维场景中,需要使用三维管点模型、管线模型来展示管网系统,模型建设成本较高,管点模型的管口与管线管道的匹配效果差,并且业务属性信息需要从点、线数据集中再次录入到三维模型中,同时维护两套数据而无法满足实时更新的需求。
  基于此,超图软件SuperMap GIS 8C版本新增基于二三维一体化技术的自适应管点符号,可由二维的点、线数据集生成三维网络数据集,根据管网走向、管线截面自动实时放样出管点符号模型,快速构建三维场景的同时大幅降低三维管网场景的建设成本,并且提高了三维管线、三维管点的显示性能,系统资源占用减少使得数据承载力大幅提升,进而满足更加庞大复杂的三维管网系统展示、管理及应用。

1.1 三维管线场景的组成

  三维管线场景通常由三维管线和三维管点两类组成,具体包括以下元素:
  1) 管线:包括圆管、方沟、管块、竖管等;
  2) 管点:包括特征点、井和附属设施三大类;
  * 特征点:包括弯头、直通、三通、四通、五通、多通、变径、盖堵、管帽等;
  * 井:包括方井、圆井、井室、偏心井、雨篦等;
  * 附属设施:包括阀门、水表、消防栓、控制柜、变压器、分线箱等;
  不同元素采用不同方式实现快速构建三维管线场景(如图 1三维管线场景组成及展示方式)。通常采用线型符号构建三维管线、自适应管点符号构建三维管点,而部分特殊特征点、井和附属设施采用模型符号展示。其中采用自适应管点符号方式构建特征点是SuperMap GIS 8C新增的功能。


图 1三维管线场景组成及展示方式

2. 构建三维网络数据集

  传统的以二维平面展现网络数据的方式,在一定程度上限制了信息的表达,尤其是在复杂的空间位置关系上,从而不可避免地影响了网络分析的准确性和可用性。三维网络是对现实中的网络的真实模拟,而非抽象模拟,因此能够全方位的展现信息。
  例如,多层结构的建筑物内的通道数据(包括楼道、楼梯和电梯等),在二维显示上无法直观地区分各楼层的通道,而从三维视图上,则可以清晰直观地了解各个楼层的通道分布情况。再如,种类繁多且纵横交错的城市管网,仅通过二维数据难以清晰地表达管线的实际布设情况。二维数据中相交的两条管线,可能实际上并没有交叉,而只是架设的高度不同。而三维管网则能够直观的表达管线的布设、空间位置关系和拓扑关系,如下图所示。

SuperMap iObjects .NET 8C技术文档 ——三维管线_第1张图片
图 2 三维管网立体展示管网布设、位置关系
  在三维管线场景中使用的数据是三维网络数据集,三维网络数据集是进行三维网络分析的数据基础,并且要使用自适应管点符号,必须首先构建三维网络数据集。
  注意用于构建三维网络数据集的数据必须具有相同坐标系,否则构建失败。

2.1 组件产品构建三维网络数据集

  SuperMap 组件产品使用NetworkBuilder3D类中的BuildNetwork()方法建立三维网络数据集, BuildNetwork重载方法构建三维网络数据集,如下:
  方法一:通过具有表达拓扑关系字段的三维点、线数据集构建三维网络数据集。
  使用该方法,三维点、线数据集不需要打断。
  语法:
  public static DatasetVector BuildNetwork(
    DatasetVector line3D,
    DatasetVector point3D,
    string edgeIDField,
    string fromNodeField,
    string toNodeField,
    string nodeIDField,
    Datasource outputDatasource,
    string networkDatasetName
  )
  参数说明:
  line3D:指定的用于构建三维网络数据集的三维线数据集。
  point3D:指定的用于构建三维网络数据集的三维点数据集。
  edgeIDField:指定的线数据集中表示弧段 ID 的字段。如果指定为 null 或空字符串,或指定的字段不存在,则自动使用 SMID 作为弧段 ID。仅支持 16 位整型、32 位整型字段。
  fromNodeField:指定的线数据集中表示弧段的起始结点 ID 的字段。仅支持 16 位整型、32 位整型字段。
  toNodeField:指定的线数据集中表示弧段的终止结点 ID 的字段。仅支持 16 位整型、32 位整型字段。
  nodeIDField:指定的点数据集中表示结点 ID 的字段。仅支持 16 位整型、32 位整型字段。
  outputDatasource:指定的用于存储结果数据集的数据源。
  networkDatasetName:指定的结果三维网络数据集的名称。
  返回值说明:
  返回构建的三维网络数据集,三维网络数据集属于矢量数据集类型。
  方法二:通过线数据集构建三维网络数据集。
  语法:
  public static DatasetVector BuildNetwork(
    DatasetVector line3D,
    string[] lineFieldNames,
    Datasource outputDatasource,
    string networkDatasetName,
    NetworkSplitMode3D networkSplitMode,
    double tolerance
  )
  参数说明:
  line3D:指定的用于构建三维网络数据集的三维线数据集。
  lineFieldNames:指定的结果网络数据集中需要保存的线数据集非系统字段名称的数组。
  outputDatasource:指定的用于存储结果三维网络数据集的数据源。
  networkDatasetName:指定的结果三维网络数据集的名称。
  networkSplitMode:指定的打断模式。此处不允许设置“点打断线”(LineSplitByPoint)模式。
  tolerance:指定的打断容限,用于判断两条线是否相交。单位为米。如果一条线的节点到线的距离小于容限,则该点作为网络数据集的一个结点。
  返回值说明:
  返回构建的三维网络数据集。
  注意打断模式设置:
  • 打断模式设置为“线线打断,同时点打断线”(LineSplitByPointAndLine)时,在线线相交处打断并添加网络结点;
  • 打断模式设置为“不打断”(None),不在任何位置打断,仅在线的两端点添加网络结点;
  • 不允许将打断模式设置为“点打断线”(LineSplitByPoint),否则抛出异常。
  方法三:通过三维点(可选)、线数据构建三维网络数据集。
  语法:
  public static DatasetVector BuildNetwork(
    DatasetVector line3D,
    DatasetVector point3D,
    string[] lineFieldNames,
    string[] pointFieldNames,
    Datasource outputDatasource,
    string networkDatasetName,
    NetworkSplitMode3D networkSplitMode,
    double tolerance
  )
  参数说明:
  line3D:指定的用于构建三维网络数据集的三维线数据集。
  point3D:指定的用于构建三维网络数据集的三维点数据集。可选。
  lineFieldNames:指定的结果网络数据集中需要保存的三维线数据集非系统字段名称的数组。
  pointFieldNames:指定的结果网络数据集中需要保存的三维点数据集非系统字段名称的数组。
  outputDatasource:指定的用于存储结果三维网络数据集的数据源。
  networkDatasetName:指定的结果三维网络数据集的名称。
  networkSplitMode:指定的打断模式。
  Tolerance:指定的打断容限,用于判定点是否为网络数据集上的结点。单位为米。如果点到线的距离小于容限,则该点作为网络数据集的一个结点。
  返回值说明:
  返回构建的三维网络数据集。
  注意打断模式设置:
  • 打断模式指定为“点打断线”(LineSplitByPoint),则仅在点线相交处打断线,在打断处添加网络结点,意味着仅由点数据来确定网络结点的位置;
  • 打断模式指定为“线线打断,同时点打断线”(LineSplitByPointAndLine),则在线线相交处、点线相交处打断线,并在打断处添加网络结点,此时点数据作为线数据的补充;
  • 打断模式指定为“不打断”(None),点数据是无效的,且线不会在相交处打断,只在线的端点处添加网络结点。

2.2 桌面产品构建三维网络数据集

  在SuperMap桌面产品采用构建三维网络和自定义构建三维网络两种方式生成三维网络数据集。

SuperMap iObjects .NET 8C技术文档 ——三维管线_第2张图片
图 3桌面构建三维网络数据集方式
  构建三维网络数据集前,需要准备用于构建网络数据的数据集。可用于构建网络数据的数据类型包括点数据集、线数据集和网络数据集。其中点数据是可选的,在不选择点数据的情况下,也可以构建网络数据集;当网络数据集参与构建时,相当于利用其他点、线数据对该网络数据进行重新构网。

2.2.1 构建三维网络

  此方式适用于根据三维点和线数据集,或者三维点和网络数据集,或者三维线数据集生成三维网络数据集。
  操作步骤:
  1) 在“数据”选项卡的“拓扑”组中,单击“拓扑构网”下拉按钮,选择“构建三维网络”,弹出如下图所示的“构建三维网络数据集”对话框。


图 4“构建三维网络数据集”对话框
  2) 源数据选择
  • 在“结点数据”处选择参与构网的三维点数据集及其所在的数据源。注:三维点数据集可设置为空,仅通过三维线数据集进行构网。
  • 在“弧段数据”处选择参与构网的三维线数据集及其所在的数据源。
  3) 保留字段选择
  • “节点保留字段”列表中列出了结点数据的所有字段信息,可通过复选框勾选参与构建网络数据集的属性字段;默认勾选所有字段。
  • “弧段保留字段”列表中列出了弧段数据的所有字段信息,可通过复选框勾选参与构建网络数据集的属性字段。默认勾选所有字段。
  4) 打断设置
  • 点自动打断线:勾选该复选框后,在容限范围内,线对象会在其与点的相交处被打断,若线对象的端点与点相交,则线不予打断。
  • 线线自动打断:勾选该复选框后,在容限范围内,两条(或两条以上)相交的线对象会在相交处被打断,若线对象与另一条线的端点相交,则这个线对象会在相交处被打断。此外,勾选“线线自动打断”操作时,系统会同时默认勾选“点自动打断线”,即“线线自动打断”功能不可以单独使用。
  • 打断容限:设置打断容限。打断容限即结点容限,表示线对象与线对象、线对象与点对象之间的最小距离。例如,若一个线对象的节点与另一个线对象的节点距离在容限范围内,则认为这两个节点重合;若一个线对象的节点与一个点对象的距离在容限范围内,则认为点在线上。
容限的默认值为数据集左右范围的1/1000000,若有多个数据集参与构建网络数据集,则以左右范围最大的数据集为参考计算容限的默认值。容限单位与数据集的单位相同,推荐使用默认容限。
  5) 结果设置:选择结果数据集所在的数据源,同时可修改结果数据集的名称。
  6) 单击“确定”按钮,即可执行网络数据集的构建,构建完成后将自动关闭“构建网络数据集”对话框。

2.2.2 自定义构建三维网络

  此方式适用于根据已存在拓扑关系的三维点、线数据集生成三维网络数据集。
操作步骤:
  1) 在“数据”选项卡的“拓扑”组中,单击“拓扑构网”下拉按钮,选择“自定义构建三维网络”。弹出如下图所示的“自定义构建三维网络数据集”对话框。


图 5“自定义构建三维网络数据集”对话框
  2) 结点数据:选择三维点数据集及其所在的数据源,同时设置结点数据的“节点标识字段”。
  3) 弧段数据:选择三维点数据集及其所在的数据源,并设置弧段数据的“弧段标识字段”、“起始结点标识字段”和“终止结点标识字段”。
  4) 结果设置:选择结果数据集所在的数据源,同时可修改结果数据集的名称。
  5) 单击“确定”按钮,即可执行网络数据集的构建,构建完成后将自动关闭“自定义构建三维网络”对话框。

3. 加载三维网络数据集

  将三维网络数据集加载到三维场景中,通过GeoStyle3D.AltitudeMode 属性将其高度模式设置为AbsoluteUnderGround地下绝对模式,通过设置Scene.Underground属性和GlobalImage. Transparency 属性来开启地下和设置透明度。
  桌面操作步骤
  1) 选中网络数据集,选择“添加到新的球面场景”中;
  2) 分别选中三维网络数据集管线与管点图层,在“风格设置”选项卡中设置图层“高度模式”为绝对高度,如果数据来源于地下,设置“数据来自”地下;

SuperMap iObjects .NET 8C技术文档 ——三维管线_第3张图片
图 6 图层风格设置
  3) 在“场景”选项卡中选择“开启”地下,设置“透明度”;
SuperMap iObjects .NET 8C技术文档 ——三维管线_第4张图片
图 7 场景设置
   注意事项
     管线、管点图层在“风格设置”选项卡均需设置为一致的高度模式和数据来源,否则高程不一致将不能正确显示。

4. 新建三维管线、管点符号

  针对三维管线场景中的不同元素,可采用不同方式实现快速构建三维管线场景,通常采用三维线型符号构建三维管线、自适应管点符号构建三维管点,而部分特殊特征点、井和附属设施则采用三维点符号展示。在这一章中主要介绍如何新建三维线型符号、新建自适应管点符号和新建三维点符号。

4.1 新建自适应管点符号

  自适应管点自动生成技术是在SuperMap GIS 8C中新加入的特性,引入该技术可以解决场景中的弯头、三通、四通等管点与管线的匹配问题。由于三维网络数据集保存了结点与哪些弧段相连的拓扑信息,根据这些拓扑信息,结点可以自动生成与管线相接的弯头、三通、四通等管点符号。
  SuperMap GIS 8C版本新增SymbolPipeNode类,该类继承于Symbol,表示自适应管点符号,用来改变自适应管点符号的样式。
  新增SymbolPipeNodeSetting类,它包含了管点符号的参数名称、参数值、取值范围等,是描述参数的元信息,通过设置“CoverLength”、“SliceNum”两个参数值定义不同种类的管点符号。
  • 参数“CoverLength”类型为Double,默认值为“0.015”,表示管点符号的箍的长度,当设置该参数值为“0”时,表示该符号不带箍;
  • 参数“SliceNum”类型为Int32,默认值为“1”,表示管点符号弯头的平滑度,数值越大,弯头效果越平滑。
以下代码为组件中实现获取自适应管点参数并设置新值:
  SymbolPipeNode m_symbolPipeNode = new SymbolPipeNode();
  SymbolPipeNodeSetting [] settings = m_symbolPipeNode.GetSettings();
  for (int i = 0; i < settings.Length; i++)
   {
   SymbolPipeNodeSetting setting = settings[i];
  if (setting.Name == “CoverLength”)
   {
//取出CoverLength参数的值
   Double coverLength = (Double)(setting.Value);
//设置CoverLength参数的值
   setting.Value = 0.02;
  break;
   }
   }
  桌面操作步骤
  1) 在“工作空间管理器”的“资源”双击“点符号库”或右键选择“加载点符号库”,打开“点符号库”对话框;
  2) 点击“新建”下拉选择“新建三维自适应符号”,打开“三维自适应管点符号编辑器”对话框;
 

SuperMap iObjects .NET 8C技术文档 ——三维管线_第5张图片
  图 8 点符号库
  3) 参数设置
  • 设置“端部厚度”,即管点的箍;
  • 设置“转角细分数”,细分数设置越大,拐弯越平滑。
SuperMap iObjects .NET 8C技术文档 ——三维管线_第6张图片
图 9三维自适应管点符号编辑器
  4) 修改“符号名称“,“设置快照”后,点击“确定”。

4.2 新建三维线型符号

  桌面操作步骤
  1) 在“工作空间管理器”的“资源”双击“线型符号库”或右键选择“加载线符号库”,打开“线型符号库”对话框;
  2) 点击“新建”下拉选择“新建三维线型”,打开“三维线型符号编辑器”对话框;


图 10 线型符号库
  3) 在“截面列表”选择圆形截面,设置”线宽“、”线颜色“,修改”符号名称“等信息;
SuperMap iObjects .NET 8C技术文档 ——三维管线_第7张图片
图 11三维自适应管点符号编辑器
  4) “设置快照”后,点击“确定”。

4.3 新建三维点符号

  桌面操作步骤
  1) 在“工作空间管理器”的“资源”双击“点符号库”或右键选择“加载点符号库”,打开“点符号库”对话框;
  2) 点击“新建”下拉选择“新建三维符号”,打开“三维点符号编辑器”对话框;

SuperMap iObjects .NET 8C技术文档 ——三维管线_第8张图片
图 12 点符号库
  3) 点击“设置模型”按钮,弹出“打开”对话框,选择一个自制模型文件(*.sgm 或 3ds 文件),并确定打开;
  4) 设置“缩放比例“和”旋转角度“,可利用默认数值;
SuperMap iObjects .NET 8C技术文档 ——三维管线_第9张图片
图 13三维点符号编辑器
  5) 修改“符号名称“,“设置快照”后,点击“确定”。

5. 构建三维管线场景

  在上一章中已完成了对三维管点、管线符号的创建,接下来将利用这些符号快速构建三维管线场景。

5.1 三维管线的构建

  根据实际场景中管线的复杂程度,通过配置管线符号构建三维管线分为两种方式:
  1) 通过设置管线图层的图层风格使用一种管线符号;
  2) 通过创建自定义专题图使用两种或两种以上的管线符号。

5.1.1 使用一种管线符号

  当一个图层的管线所使用的线型符号、颜色、宽度一样,在组件产品中只需要设置图层的符号、线颜色、线宽度,即设置几何对象风格类GeoStyle3D的LineSymbolID、LineColor和LineWidth属性;
注意事项
  • 图层上线宽度(GeoStyle3D.LineWidth)的最小值为0.1米,设置更小的值将被当做0.1米处理。
  • 如果需要指定比0.1米更小的管线宽度,可使用Layer3DSettingVector类中的SymbolScaleXField和SymbolScaleYField属性控制。这两个属性设置线型符号在横向、纵向缩放比例的字段名称,这个缩放比例存在于数据的属性字段中,可分别设置每条管线的横向、纵向缩放比例。
  • 建议使用时指定管线宽度(GeoSyle3D.LineWidth)为1,然后通过SymbolScaleXField和SymbolScaleYField属性控制管线的实际线宽。
  桌面操作步骤
  1) 选择管线图层,右键选择“图层风格”,打开“线型符号选择器”对话框;


图 14 图层风格
  2) 在“线型符号选择器”中选择“三维线型”,点击所要设置符号,可根据情况更改符号的“线宽度”和“线颜色”;
  • “线宽度”:根据实际情况设置;
  • “线颜色”:根据实际情况设置;
SuperMap iObjects .NET 8C技术文档 ——三维管线_第10张图片
图 15 线型符号选择器
  3) 点击“确定”。
  设置好三维管线的线型符号后,SuperMap GIS 8C版本将显示默认自适应管点符号。默认的自适应管点符号颜色与管线颜色一致,带箍,箍长度为0.015米,弯头管点拐弯处为尖角,如下图。
SuperMap iObjects .NET 8C技术文档 ——三维管线_第11张图片
图 16 默认自适应管点符号

5.1.2 使用多种管线符号

  如果一个图层的管线所使用的线型符号、颜色和线宽不同,在组件产品中通过制作三维自定义专题图(Theme3DCustom类)来设置多类型的线型符号。
  LineSymbolIDExpression属性:获取或设置对应线型符号编号所在的字段;
  LineColorExpression属性: 获取或设置对应线型颜色所在的字段;
  LineWidthExpression属性: 获取或设置对应线型宽度所在的字段;建议使用SymbolScaleXField和SymbolScaleYField控制线宽。
  桌面操作步骤
  1) 选择管线图层,右键选择“制作专题图”,打开“制作专题图”页面;

SuperMap iObjects .NET 8C技术文档 ——三维管线_第12张图片
图 17 制作专题图
  2) 选择“自定义专题图”;

图 18 自定义专题图
  3) 设置专题图线型
   “线型风格”:设置存储线型风格的字段;
   “线型颜色”:设置存储线型颜色的字段;
   “线型宽度”:设置存储线型风格的字段;
SuperMap iObjects .NET 8C技术文档 ——三维管线_第13张图片
图 19 设置自定义专题图线型字段
  4) 选中新建的专题图,在“风格设置”选项卡设置以下:
  • “高度模式”:绝对高度
  • “数据来自”:地下
SuperMap iObjects .NET 8C技术文档 ——三维管线_第14张图片
图 20 自定义专题图风格设置
   注意事项
  • 虽然SuperMap GIS支持任意形状的线型符号截面,但在8C版本中建议使用左右对称的线型符号,否则会出现管线与弯头、三通等管点无法对齐的问题。
  • 通过“三维线型符号编辑器”制作线型符号时,如果制作圆形截面的管线,不勾选“自动打断”选项(如图3-3的红圈部分),可以改善渲染效果和提升渲染性能。

图 21 制作圆形截面线型符号

5.2 三维管点的构建

  三维管点分为特征点、井和附属设施三大类别的要素,SuperMap GIS 8C新增采用自适应管点符号方式构建直通、三通、四通、弯头等特征点,而部分特殊特征点、井和附属设施继续采用模型符号展示这类具有复杂结构、特殊外表的管点。
根据实际场景中管点符号的复杂程度,通过配置管点符号构建三维管点分为两种方式:

5.2.1 使用一种管点符号

  当一个图层的所有管点使用一种管点符号时,在组件中只需要设置管点图层的图层风格为管点符号即可,即设置几何对象风格类GeoStyle3D.MarkerSymbolID属性。
  桌面操作步骤
  1) 选择管点图层,右键选择“图层风格”,打开“点符号选择器”对话框;
  2) 在“点符号选择器”中选择“三维模型”,选择新建的自适应管点符号;

SuperMap iObjects .NET 8C技术文档 ——三维管线_第15张图片
图 22 点符号选择器
  3) 点击“确定”。
  管点使用自适应管点符号前后对比效果如下图:
SuperMap iObjects .NET 8C技术文档 ——三维管线_第16张图片
图 23 使用自适应管点符号前后对比

5.2.2 使用多种管点符号

  对于管点图层,井、阀门、变电箱等这一类具有复杂结构、特殊外表的管点,通常采用模型符号。那么如何使得管点图层有的能显示为自适管点,有的显示为模型符号呢?即通过使用三维自定义专题图 (Theme3DCustom类),三维自定义专题图允许用户为图层指定若干字段,利用图层中每个对象的字段值表示这个对象的显示特征,可设置其模型符号、旋转、缩放、颜色等属性。
  通过制作自定义专题图,根据符号ID的值显示为不同类型管点,符号ID取值有以下几种情况:
  • 当管点为直通、三通、四通、弯头等特征点时,显示为自适应符号,符号ID设为已创建的自适应管点符号ID或设为0;
  • 当管点为阀门、消防栓、井等特殊管点时,显示为模型符号,符号ID设为符号库中已存在的模型符号ID;
  • 当管点为普通管段时,符号ID设为-1。
  注意:由于专题图没有存储网路拓扑关系,使用自定义专题图构建自适应管点时,需要调用接口Layer3D.SetParentLayer()设置管点图层的父图层为对应的管线图层。
  桌面操作步骤
  1) 选择管点图层,右键选择“制作专题图”,打开“制作专题图”页面;

SuperMap iObjects .NET 8C技术文档 ——三维管线_第17张图片
图 24 制作专题图
  2) 选择“自定义专题图”;
SuperMap iObjects .NET 8C技术文档 ——三维管线_第18张图片
图 25 自定义专题图
  3) 设置专题图属性
  • “符号风格”:设置存储符号风格的字段;
  • “模型符号旋转”:设置存储符号旋转参数的字段;
  • “模型符号缩放”: 设置存储符号缩放参数的字段;
SuperMap iObjects .NET 8C技术文档 ——三维管线_第19张图片
图 26 自定义专题图属性设置

常见问题

  1) 为什么自适应管点显示不出来?
  自适应管点显示不成功的原因大致有以下几点,请检查是否设置正确:
  • 检查管点图层和对应的管线图层的高度模式、底部高程是否一致,如果没有,请设置一致;
  • 检查是否设置管点图层的父图层。这种问题常见于通过设置自定义专题图图层生成自适应管点,由于专题图没有存储拓扑关系,需要设置其父图层为对应的管线图层,设置完成后刷新图层,自适应管点才能显示。
  设置父图层方法:
  1)在SuperMap GIS桌面产品中,图层管理器选择该专题图,右击选择“关联图层风格”,弹出的对话框中设置目标图层为对应的管线图层(如图 27 桌面产品中设置“父图层”);
  2)在SuperMap GIS组件产品中,则调用Layer3D.SetParentLaye()接口,并检查返回的结果是否为true,设置后需要刷新图层。


SuperMap iObjects .NET 8C技术文档 ——三维管线_第20张图片
图 27 桌面产品中设置“父图层”
  • 如果场景中使用的数据是管点、管线的缓存图层,请检查缓存图层是否是用网络数据集中的点、线子数据集单独生成的,如果是,那么需要重新生成缓存,在矢量参数设置中将两个图层的“瓦片边长”数值设置成一致,如下图。在组件产品中通过VectorCacheBuilder.TileWidth属性获取或设置瓦片边长。
SuperMap iObjects .NET 8C技术文档 ——三维管线_第21张图片
图 28生成缓存时设置“瓦片边长”
   2) 为什么场景中不显示管网数据?
  请将图层的高度模式设置为“绝对高度”,如果管网数据位于地下,请设置数据来自“地下”,并“开启”地下和设置透明度。

图 29 设置高度模式和数据来自地下
SuperMap iObjects .NET 8C技术文档 ——三维管线_第22张图片
图 30 设置开启地下
   3) 为什么在管线场景中鼠标稍微一拖动,管线大块大块的消失?
  检查图层的Layer3DSettingVector.UpdateSize属性是否设置的太小,此属性决定了图层每次更新的瓦片块数,设置过小将导致调度的块很大,很容易从场景中调度出去,建议设置为16。
   4) 为什么设置的圆管看起来不圆?
  请在“三维线型符号编辑器”中制作圆管符号时,去掉“自动打断”选项。此自动打断选项会把参数化的圆转化为多边形存储,造成精度损失。
SuperMap iObjects .NET 8C技术文档 ——三维管线_第23张图片
图 31 去掉“自动打断”选项
   5) 怎么提高管线场景的渲染性能?
  • 修改管线图层风格中的GeoStyle3D.TubeSides属性,在不需要管线特别圆滑的情况下将其设置的小一些(默认值20),可以减少管线模型的复杂程度;
  • 弯头、三通、四通等特征点尽量使用自适应管点符号,可以提高渲染效率;
  • 修改自适应管点符号的转角细分数,在满足视觉要求的情况下尽可能设置的小一些。
SuperMap iObjects .NET 8C技术文档 ——三维管线_第24张图片
图 32 修改转角细分数
   6) 构建三维网络数据集时出现点丢失或构建结果明显错误情况?
  检查构建三维网络数据集时设置的“打断容限”值,打断容限表示线对象与线对象、线对象与点对象之间的最小距离,设置过大将出现错误,建议设置为0.001以下,推荐使用默认数值。
SuperMap iObjects .NET 8C技术文档 ——三维管线_第25张图片
图 33 打断容限设置

你可能感兴趣的:(SuperMap iObjects .NET 8C技术文档 ——三维管线)