Arcgis-engine二次开发之空间关系查询与按图形查询

3 篇文章 1 订阅
3 篇文章 2 订阅

在GIS系统中,查询一般分为从图形查询属性和从属性查询图形两种类型。从图形查询属性,即指用户通过点选、拉框选择、拉圆选择、拉多边形选择等方式,选中特定图层中相应的几何实体,查询出这些几何实体对应的属性信息。从属性查询图形,即用户输入特定的属性或者空间关系的筛选条件,查出符合条件的几何实体。这两类查询在GIS系统中都有着广泛的应用。


目录

一、按空间关系查询

二、按图形查询


一、按空间关系查询

空间位置、空间关系查询是根据查询的几何形状和空间关系,对所选择的要素图层进行查询。一般的操作步骤为:选择要查询的要素图层;选择用于查询几何形状类型。根据选择的几何形状类型:点、线、矩形、圆和多边形。在图上选择或绘制用于查询的几何形状:选择空间关系;执行查询。实现思路为:首先构建一个窗体,如图所示;其中第一个设定选择类型,有四种:构造新的选择集、添加当前选择集、从当前选择及去除,从当前选择集中选择构造新的选择集。要查询的要素图层的名称,保存在CheckedListBox中:空间关系,保存在ComboBox中:设置查询图层的名称; .设置缓冲区距离。

窗体设计:

 如同之前的按属性查询,这里也需要添加加载按图形查询的Load事件。

 通过IFeatureLayer接口将地图图层导入我们设计的名为“GetFeatureLayerByName”的listbox中

 调用相应空间选择方法:

 使用IFeatureSelection接口选择要素(对所有的被选图层进行遍历)。 

 按缓冲区查询:

二、按图形查询

图形查询是以用户通过鼠标操作生成的图形几何体为输入条件进行查询的查询,其查询结果为该几何体空间范围内的所有要素。常用的查询方式包括点选、线选、多边形选择、圆形选择和矩形选择等。图像查询主要使用Map类IMap接口中的方法,此外,还需要到Map类的IGraphicsContainer接口和操控图形元素中的IElement接口。使用IMap接口的SelectByShape方法。

这里我们选择AE自带的绘图工具进行图形查询:

添加按图形查询的按钮,并在其下添加相应的代码。首先清空地图选择集,以进行后续的选择操作,使用IGraphicsContainer接口获取地图中的各个图形(Graphics),使用IElement接口操作所获取第一个图形,并获取图形的几何信息,通过第一个图形来选择要素。

相应代码:

 private void 按图形查询ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                mainMapControl.Map.FeatureSelection.Clear();
                IGraphicsContainer graphicsContainer = mainMapControl.Map as IGraphicsContainer;
                graphicsContainer.Reset();
                IElement element = graphicsContainer.Next();
                IGeometry geometry = element.Geometry;
                mainMapControl.Map.SelectByShape(geometry, null, false);
                mainMapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, mainMapControl.ActiveView.Extent);
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
            }
        }

 在ToolbarControl控件中调用一些用于绘制形状的Item,注意要在属性中绑定Buddy为主窗体“mainMapControl”

运行结果:

 可以看到,与绘制图形的地方相交的地图要素都被选择上了。


本文的代码链接:链接:https://pan.baidu.com/s/1bDr63Bb3dj-pxW1x7tR6mQ 
提取码:1234

  • 14
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
ArcGIS Engine 是一种用于开发空间信息系统的软件开发工具包,它可以用来构建各种类型的空间查询应用程序。空间查询是在地理信息系统中非常重要的功能,它可以帮助用户在地图上进行位置和空间信息的搜索和分析。ArcGIS Engine 提供了丰富的空间查询功能,包括点、线、面的空间关系分析,空间缓冲区分析,空间相交和重叠分析等。通过使用ArcGIS Engine,开发者可以轻松地实现各种复杂的空间查询需求。 在ArcGIS Engine开发空间查询应用程序时,开发者需要首先了解空间数据的结构和存储方式,然后通过ArcObjects API来实现空间查询功能。具体步骤包括创建地图控件和数据源,加载地图和空间数据,进行空间查询操作,获取查询结果并进行展示。同时,开发者还可以通过ArcGIS Engine提供的各种工具和控件来实现地图交互操作,例如地图缩放、平移、标注等,以提升用户体验。 在开发过程中,开发者还需要考虑空间查询的性能优化和结果可视化,确保应用程序可以快速响应用户操作并清晰展示查询结果。除此之外,还需要考虑数据安全性和权限控制,以确保空间查询过程中的数据安全可靠。 总之,ArcGIS Engine提供了丰富的空间查询功能和灵活的开发工具,能够帮助开发者快速构建高效、功能丰富的空间查询应用程序,满足用户在地理信息系统领域的各种需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值