在主窗体中添加名为“按属性查询”的按钮,并添加按钮响应 事件 。

通过建立CurrentMap属性得到MapControl的Map对象的属性,并加入实现调用子窗体的代码:


新建一个windows窗体,按需求添加相应的 控件 。按属性查询的窗体中需包含图层名称的选择框(对应工具箱中的comboBox),选择方式的选择框(选择方式包含四种,添加到字符串集合),显示图层要素属性字段的listbox,以及图层属性值的listbox(如图所示)。同时还需要有相关筛选要素条件按钮,都为button控件。最后,还需要有包含筛选要素查询条件表达式(where 语句)的textbox控件。



界面设计完成后注意设置相应控件的事件响应,操作的总体思路是:窗体的Load事件中加载当前地图对象中的要素图层到图层下拉列表框ComboBox 中,默认选择是第一个图层;将ComboBox中默认图层的字段读取出来放置于属性字段的ListBox里面,通过条件按钮(“=”、“>”等)构建查询的where语句传入包含筛选要素查询条件表达式(where 语句)的textbox控件中。当点击应用时执行查询。




在事件下添加对应的代码,其中用于选择要素的代码如下:
private void SelectFeaturesByAttribute() { //使用FeatureLayer对象的IFeatureSelection接口来执行查询操作。这里有一个接口转换操作。 IFeatureSelection featureSelection = currentFeatureLayer as IFeatureSelection; //新建IQueryFilter接口的对象来进行where语句的定义 IQueryFilter queryFilter = new QueryFilterClass(); //设置where语句内容 queryFilter.WhereClause = textBoxWhere.Text; //通过接口转换使用Map对象的IActiveView接口来部分刷新地图窗口,从而高亮显示查询的结果 IActiveView activeView = currentMap as IActiveView; //根据查询选择方式的不同,得到不同的选择集 switch (comboBoxSelectMethod.SelectedIndex) { //在新建选择集的情况下 case 0: //首先使用IMap接口的ClearSelection()方法清空地图选择集 currentMap.ClearSelection(); //根据定义的where语句使用IFeatureSelection接口的SelectFeatures方法选择要素,并将其添加到选择集中 featureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultNew, false); break; //添加到当前选择集的情况 case 1: featureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultAdd, false); break; //从当前选择集中删除的情况 case 2: featureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultXOR, false); break; //从当前选择集中选择的情况 case 3: featureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultAnd, false); break; //默认为新建选择集的情况 default: currentMap.ClearSelection(); featureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultNew, false); break; }其中,根据定义的where语句使用IFeatureSelection接口的SelectFeatures方法选择要素,并将其添加到选择集中,通过接口转换使用Map对象的IActiveView接口来部分刷新地图窗口,从而 高亮显示 查询的结果。


整体运行结果:

可以看到按属性查询的结果被高亮显示了出来。
本文完整代码链接:链接:https://pan.baidu.com/s/1LulV1m15OKIMNKGHKAQuIQ 提取码:1234

如果有充足时间的话, 接下来的几期会持续更新 AE 空间查询及数据操作的一些内容。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删