首页 / 浏览问题 / 组件GIS / 问题详情
关于iObject中三维管线查询问题
匿名
2017年07月25日

RT 实现断面分析的功能 需要在图层上绘制一条线段 与该线段相交的管网是需要被查询出的对象

遇到如下问题 因为QueryParameter.SpatialQueryObject方法原因 目前是使用 绘制出的三维线外接矩形进行相交查询 代码段如下

查询结果如下

问题很明显 我不需要查询到的部分 由于是使用外接矩形的关系 被查询到了 现在 我只想根据GeoLine3D 线经过部分进行查询 应该做什么处理

问题二

断面分析结果需要以断面图的形式展示出来 如图

请问超图是否支持这样的图表显示 如支持应该怎么做 如不支持 是否是需要自行制作表格 之后将记录查询出后再二次修改

殷切盼复 谢谢

2 个回答

1.三维对象是没有空间查询这个说法的,您查询的结果实际上是把三维对象投到二维面上做了一个查询,所以只要在二维面上相交的对象都会被查询出来。建议使用Geometrist3D.HasIntersection 方法 来判断三维线与三维体是否相交。另外如果您的管网数据是矢量线数据风格化之后得到的,建议将其切OSGB缓存之后再做相交查询。如果管网本身就是模型数据,可直接使用上述方法做查询。

2.组件没有提供绘制图表的接口,需自行绘制。
5,985EXP 2017年07月25日
Geometrist3D.HasIntersection 这个方法 我看了 需要传两个三维几何对象进去 返回布尔值 问题是 其中有一个是我需要查出来的对象 只有一个对象 就是我自己画的线是知道的 而且这个返回值我拿来没用啊 除非是遍历数据集中每一个管线数据 然后找出true值 才确定是哪个记录相交
遍历是一种方式,还有就是可以跟二维的空间查询相结合,像您刚刚不是查出来了三条管线吗,再对这三条管线做个遍历判断就好了,这样效率可能要高一些
我也可以这样 把那个自画的线段做成2D的 然后再去做一次Intersect查询 应该也可以
谢谢提供思路 我去试试
关于横截面数据分析(剖面分析),超图是可以直接生成剖面图的(当然表格部分仍需要自行绘制)。

您可以参考示例代码中的 剖面分析(ProfileAnalyst)或者 三维分析(Analysis3D)中的Profile。
5,560EXP 2017年07月26日
好的 谢谢

额 在这里想问下超图 SceneControl 的场景刷新率 参数是多少

即时获取当前场景帧率:SceneControl.Scene.FPS

场景帧率和硬件以及模型精细度等等相关。具体您可以参考博客

http://blog.csdn.net/supermapsupport/article/details/68059148

现将相关内容摘录如下:

场景性能优化。

  • 条件允许的情况下,尽量升级显卡,显卡(GPU运算)对三维渲染至关重要。
  • 对场景生成缓存,建议生成OSGB格式的缓存。
  • 对场景进行“性能诊断”,根据诊断结果有针对性的进行优化操作。其结果信息包括:重要、普通和建议。其中,重要提示对场景性能影响较大,其次是普通提示,建议提示则对场景性能影响较小。
  • 显卡等硬件已经极好的情况下,场景仍然不流畅,一般是模型建得过于精细,目前硬件条件渲染还比较吃力。可打开“场景属性”,“其他属性”中勾上“帧率信息”,显示场景的“帧率”、“三角面数量”信息,观察帧率是否过低(一般30以上较流畅),三角面数量是否过高(一般情况数据不太大,但其值高于几千万属建模太精细)。如证实为建模太精细,可考虑从建模层面优化模型(模型简化),如减少顶点数,模型面数,控制贴图纹理大小等。
  • 倾斜摄影模型数据优化可以考虑对scp文件进行“合并根节点”、“压缩纹理操作”。在桌面的“倾斜摄影”菜单中能够找到这两个功能。
...