ArcEngine地图点击事件下的属性查询实例

3星 · 超过75%的资源 需积分: 39 55 下载量 43 浏览量 更新于2024-09-17 收藏 5KB TXT 举报
在ArcGIS Engine中,属性查询是一个关键的功能,用于检索地图层中的特定属性数据。本段代码是针对ArcMap Control(axMapControl)中实现鼠标点击事件(OnMouseDown)时的属性查询功能的一个片段。当用户点击一个特定按钮(barBtnProperty)且该按钮的Tag属性为真时,程序会执行属性查询操作。 首先,代码检查barBtnProperty.Tag的状态,如果为真,则执行以下步骤: 1. 将barBtnProperty.Tag设置为假,表示查询正在进行。 2. 定义并初始化几个关键的对象,如ILayer(图层)、IFeatureLayer(特征图层)、IFeatureSelection(特征选择)、IEnvelope(矩形范围)、IGeometry(几何对象)、ISpatialFilter(空间过滤器)、ISelectionSet(选择集)、IEnumIDs(枚举ID集合)等。 3. 计算鼠标点击位置与地图视图边界之间的距离(ext),用于创建查询范围的边界,这里是通过地图的宽度和比例缩放来动态调整查询范围的大小。 4. 创建一个Envelope类实例(pEnv)并将地图当前的Extent(边界)减去自定义的扩展值赋值给它,形成查询范围。 5. 将地图的鼠标点击坐标减去扩展值后的范围赋值给几何对象(pGeometry)。 6. 使用几何对象创建一个空间过滤器(pSpatialFilter),设置其关系运算符为esriSpatialRelIntersects,即交集,这样只返回与查询范围有交集的特征。 7. 创建一个FrmIdentity对象(FrmIdentityClass的实例),这是一个包含属性树视图的对话框,用于展示查询结果。设置对话框的位置为屏幕中心,并显示。 8. 清空属性树视图(AttributeTreeView)节点,然后开启显示线条选项。 9. 最后,调用FrmIdentity的CreatForm方法打开属性查询对话框,显示地图层的属性供用户查看或筛选。 这段代码的核心逻辑在于利用空间过滤器和鼠标点击位置,动态地执行属性查询,并将结果显示在一个交互式的属性树视图中,提高了用户的查询体验。通过这个例子,我们可以理解如何在ArcGIS Engine中结合用户交互进行高效的属性数据获取。