欢迎来到天天文库
浏览记录
ID:38581533
大小:159.50 KB
页数:11页
时间:2019-06-15
《C# Arcengine 属性查图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Arcengine属性查图空间数据查询按查询方式来分,主要分为两类:根据属性条件查询对象和根据几何条件查询对象。无论是根据属性还是根据几何来查询对象,都必须设置相应的查询条件。在ArcGISEngine中,FeatureLayer对象和IFeatureClass对象有一个Search()方法专门用于空间数据查询,同时ArcGISEngine中提供了一个IQueryFilter接口来设置查询的条件(属性条件和几何条件)。首先来看一下IFeatureLayer接口的Search()方法,其定义如下:publicIFeatureCursorSearch(IQueryFilterquer
2、yFilter,boolrecycling);该方法有两个参数:第一个参数queryFilter为一个IQueryFilter对象,用于指定查询的条件了;第二个参数recycling为一个Bool数据类型,表示查询结果游标是否循环。该方法的返回值为一个IFeatureCursor对象,该游标对象表示查询的结果对象。下面就分别根据属性条件查询对象和根据几何条件查询对象来介绍空间数据查询的过程:一、根据属性条件查询对象首先新建一个项目,设置项目名称为“空间数据查询”,并在窗体上添加如下图所示控件(axMapControl1、axTOCControl1、axLicenseControl
3、1、axToolbarControl1):同时为了便于设置条件来查询对象,添加如下图所示控件(layerComboBox、queryFiltertextBox和根据属性条件查询对象):其中,layerComboBox控件用于表示要查询的图层,queryFiltertextBox控件表示查询的条件。1、定义刷新图层函数在每次添加新数据或打开新地图时,都要更新layerComboBox控件中的显示项来表示当前地图中的图层。定义刷新图层函数RefreshLayer(),其代码如下: privatevoidRefreshLayer(){layerComboBox.Items.Cl
4、ear(); for(inti=0;i5、cGIS.Carto.IFeatureLayerpFeatureLayer=axMapControl1.get_Layer(layerComboBox.SelectedIndex)asESRI.ArcGIS.Carto.IFeatureLayer; if(pFeatureLayer==null){ MessageBox.Show("选择图层不是Feature图层!"); return;}如上代码中,定义一个IFeatureLayer对象,该图层对象即为layerComboBox控件中选择的图层,如果该图层不是FeatureLayer,则返回。6、2)定义查询条件首先定义一个查询过滤对象,如下代码所示(由于IQueryFilter接口位于Geodatabase库中,所以还需要添加引用Geodatabase库):ESRI.ArcGIS.Geodatabase.IQueryFilterqueryFilter=newESRI.ArcGIS.Geodatabase.QueryFilterClass();从queryFiltertextBox控件中获取查询条件,如下:queryFilter.WhereClause=queryFiltertextBox.Text;3)查询对象定义一个游标对象IFeatureCursor表示查询到的结果7、,使用IFeatureLayer的Search()方法来查询,如下代码:ESRI.ArcGIS.Geodatabase.IFeatureCursorfeatureCursor=pFeatureLayer.Search(queryFilter,false);4)高亮显示数据高亮显示数据可以使用axMapControl1的FlashShape()方法来实现,如下代码: ESRI.ArcGIS.Geodatabase.IFeaturepFeature; while(
5、cGIS.Carto.IFeatureLayerpFeatureLayer=axMapControl1.get_Layer(layerComboBox.SelectedIndex)asESRI.ArcGIS.Carto.IFeatureLayer; if(pFeatureLayer==null){ MessageBox.Show("选择图层不是Feature图层!"); return;}如上代码中,定义一个IFeatureLayer对象,该图层对象即为layerComboBox控件中选择的图层,如果该图层不是FeatureLayer,则返回。
6、2)定义查询条件首先定义一个查询过滤对象,如下代码所示(由于IQueryFilter接口位于Geodatabase库中,所以还需要添加引用Geodatabase库):ESRI.ArcGIS.Geodatabase.IQueryFilterqueryFilter=newESRI.ArcGIS.Geodatabase.QueryFilterClass();从queryFiltertextBox控件中获取查询条件,如下:queryFilter.WhereClause=queryFiltertextBox.Text;3)查询对象定义一个游标对象IFeatureCursor表示查询到的结果
7、,使用IFeatureLayer的Search()方法来查询,如下代码:ESRI.ArcGIS.Geodatabase.IFeatureCursorfeatureCursor=pFeatureLayer.Search(queryFilter,false);4)高亮显示数据高亮显示数据可以使用axMapControl1的FlashShape()方法来实现,如下代码: ESRI.ArcGIS.Geodatabase.IFeaturepFeature; while(
此文档下载收益归作者所有