PIE SDK矢量数据的查询

 

1.功能简介

    矢量数据查询有属性查询和空间几何查询,下面对矢量数据的属性查询和空间查询做介绍

2.功能实现说明

2.1. 矢量数据的属性和空间查询

2.2. 实现思路及原理说明

第一步

得到要查询的图层

第二步

设置属性/空间查询条件

第三步

根据查询条件进行查询并在地图中高亮显示

2.3.  核心接口与方法

接口/类

方法/属性

说明

IQueryFilter

SetAttributeQuery()

设置属性条件

IQueryFilter

SetSpatialQuery();

设置空间条件

IFeatureClass

Search(IQueryFilter filter);

 查询

IFeatureCursor

NextFeature()

获得下一个要素

2.4. 示例代码

属性查询:

项目路径

百度云盘地址下/PIE示例程序/04数据操作/04矢量数据的查询

数据路径

百度云盘地址下/PIE示例数据/矢量数据/Shape/省级行政区.shp

视频路径

   百度云盘地址下/PIE示例程序/04数据操作/04矢量数据的查询.avi

示例代码

 1          /// <summary>
 2         /// 矢量数据集属性查询
 3         /// </summary>
 4         /// <param name="sender">事件触发器</param>
 5         /// <param name="e">事件参数</param>
 6         private void toolStripButton_QueryAttribute_Click(object sender, EventArgs e)
 7         {
 8             //1.首先要获取图层要素
 9             IMap map = mapControlMain.FocusMap;
10             ILayer layer = map.GetLayer(0);
11             IFeatureLayer featureLayer = layer as IFeatureLayer;
12 
13             //2.设置查询条件
14             IQueryFilter queryFilter = new QueryFilter();
15             string filter = "NAME='北京'";
16             queryFilter.SetAttributeQuery(filter);
17 
18             //3.得到查询结果
19             IFeatureCursor featureCursor = featureLayer.FeatureClass.Search(queryFilter);
20             IFeature feature = null;
21             feature = featureCursor.NextFeature();
22 
23             //清除之前查询高亮显示的结果
24             map.ClearSelectionFeatures();
25             //4.地图显示得到的结果
26             if (feature != null)
27             {
28                 mapControlMain.FocusMap.SelectFeature(featureLayer as ILayer, feature);
29               }            mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
30         }
View Code

空间查询:

项目路径

百度云盘地址下/PIE示例程序/04数据操作/04矢量数据的查询

数据路径

百度云盘地址下/PIE示例数据/矢量数据/Shape/省级行政区.shp

视频路径

   百度云盘地址下/PIE视频教程/04数据操作/04矢量数据的查询.avi

示例代码

 1         /// <summary>
 2         /// 矢量数据集空间查询
 3         /// </summary>
 4         /// <param name="sender">事件触发器</param>
 5         /// <param name="e">事件参数</param>
 6         private void toolStripButton_QuerySpatial_Click(object sender, EventArgs e)
 7         {
 8             //1.首先要获取图层要素
 9             IMap map = mapControlMain.FocusMap;
10             ILayer layer = map.GetLayer(0);
11             IFeatureLayer featureLayer = layer as IFeatureLayer;
12 
13             //2.设置查询条件
14             IQueryFilter queryFilter = new QueryFilter();
15             // 定义范围
16             IEnvelope envelope = new Envelope();
17             envelope.PutCoords(110, 30, 115, 40);
18             queryFilter.SetSpatialQuery(envelope as IGeometry);
19 
20             //3.得到查询结果
21             IFeatureCursor featureCursor = featureLayer.FeatureClass.Search(queryFilter);
22             IFeature feature = null;
23             feature = featureCursor.NextFeature();
24 
25             //4.地图显示得到的结果
26             map.ClearSelectionFeatures();
27             while (feature != null)
28             {
29                 mapControlMain.FocusMap.SelectFeature(featureLayer as ILayer, feature);
30                 feature = featureCursor.NextFeature();
31             }          mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
32         }
View Code

2.5. 示例截图

 

图1.属性查询示例图

  

图2.空间几何查询

原文地址:https://www.cnblogs.com/PIESat/p/10168580.html