SuperMap iObject入门开发系列之五管线属性查询

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

管线属性查询功能针对单一管线图层进行特定的条件查询,然后将查询结果输出为列表,并添加点位闪烁功能,例如查询污水管线中,断面尺寸为400-600区间的管线,如下图所示:

具体功能实现思路:

  • 首先获取到用户设置的查询条件filter,通过DatasetVector.Query方法进行查询,该方法上篇文章也有讲到,该方法返回的是符合条件的数据记录集Recordset。
  • 获取到指定条件的记录集后将其填充到dataGridView,如下图所示:

首先填充表头,循环遍历Recordset,获取字段别名FieldInfo.Caption,然后根据需求选择需要显示的字段进行添加。

核心代码如下

接下来填充字段信息内容,同样的遍历Recordset,通过recordset的GetFieldValue方法获取到字段值,并填充到DataGridView表格中的对应单元cell,这里遍历recordset用的是while循环,用recordset.IsEOF判断是否到最后一条记录,然后用recordset.MoveNext()方法跳到下一条记录。

核心代码如下

  • 最后将的是定位和闪烁高亮功能,这个在很多情况下会用到,触发定位和闪烁的功能写在dataGridView_MouseUp事件里,当点击表格中某一行时,定位到该行数据对应的管线并进行高亮闪烁。
  • 闪烁功能超图iObejct没有提供相应的接口,我这里结合timer进行闪烁功能的开发,首先获取到选中行的第一个单元格的数据为SmID,为了定位和闪烁,一般将第一列固定为SmID。Timer初始值为100,最大到112,这个根据自己需要设定,在这12毫秒内,除2取余,余数为0进行选中高亮,余数为1清空选择集,从而达到闪烁的效果。

核心代码如下:

定位功能首先获取对应ID的记录集通过query方法,然后获取对应的这一条记录集的SmX,SmY字段,或者通过Bounds获取他的范围,得到中心点geoX,geoY坐标。然后通过Camera相机类,设置好他的经纬度和一系列参数,最后通过场景的FLY方法进行飞行定位。

核心代码如下:

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

作者: GIS之家

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注