在ArcEngine下实现图层属性过滤的两种方法
分享
有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求。
按下面介绍的方法可轻松实现图层属性过滤显示:
1、当图层已经加载时
privatevoid ShowByFilter(AxMapControl sMapCtr, IFeatureLayer sFlyr, stringsFilter)
{
ESRI.ArcGIS.Carto.IFeatureLayerDefinition pDef = (ESRI.ArcGIS.Carto.IFeatureLayerDefinition)sFlyr;
pDef.DefinitionExpression = sFilter;
sMapCtr.ActiveView.Refresh();
}
2、当图层尚未加载时
privateIFeatureClassGetFeatureClass(IWorkspace pWS, stringsTabName, string sAttrFilter)
{
try
{
if(pWS == null || sTabName == null) returnnull;
IFeatureWorkspace pFWS = pWS asIFeatureWorkspace;
IFeatureClass pFC = null;
pFC =pFWS.OpenFeatureClass(sTabName);
IQueryDefpQueryDef = pFWS.CreateQueryDef();
pQueryDef.Tables = sTabName;
pQueryDef.WhereClause =sAttrFilter;
IQueryName2pQueryName = newFeatureQueryNameClass();
pQueryName.PrimaryKey =pFC.OIDFieldName;
pQueryName.QueryDef =pQueryDef;
IDatasetpDS = (IDataset)pFWS;
IWorkspaceName pWSName = (IWorkspaceName)pDS.FullName;
IDatasetName pDSName = (IDatasetName)pQueryName;
pDSName.WorkspaceName =pWSName;
INamepName = (IName)pQueryName;
pFC = pName.Open() asIFeatureClass;
returnpFC;
}
catch
{
returnnull;
}
}
由属性过滤后的FeatureClass创建图层、加载到地图的过程就比较简单了
文章来源:http://blog.csdn.net/sydbc/article/details/17216429
按下面介绍的方法可轻松实现图层属性过滤显示:
1、当图层已经加载时
privatevoid ShowByFilter(AxMapControl sMapCtr, IFeatureLayer sFlyr, stringsFilter)
{
ESRI.ArcGIS.Carto.IFeatureLayerDefinition pDef = (ESRI.ArcGIS.Carto.IFeatureLayerDefinition)sFlyr;
pDef.DefinitionExpression = sFilter;
sMapCtr.ActiveView.Refresh();
}
2、当图层尚未加载时
privateIFeatureClassGetFeatureClass(IWorkspace pWS, stringsTabName, string sAttrFilter)
{
try
{
if(pWS == null || sTabName == null) returnnull;
IFeatureWorkspace pFWS = pWS asIFeatureWorkspace;
IFeatureClass pFC = null;
pFC =pFWS.OpenFeatureClass(sTabName);
IQueryDefpQueryDef = pFWS.CreateQueryDef();
pQueryDef.Tables = sTabName;
pQueryDef.WhereClause =sAttrFilter;
IQueryName2pQueryName = newFeatureQueryNameClass();
pQueryName.PrimaryKey =pFC.OIDFieldName;
pQueryName.QueryDef =pQueryDef;
IDatasetpDS = (IDataset)pFWS;
IWorkspaceName pWSName = (IWorkspaceName)pDS.FullName;
IDatasetName pDSName = (IDatasetName)pQueryName;
pDSName.WorkspaceName =pWSName;
INamepName = (IName)pQueryName;
pFC = pName.Open() asIFeatureClass;
returnpFC;
}
catch
{
returnnull;
}
}
由属性过滤后的FeatureClass创建图层、加载到地图的过程就比较简单了
文章来源:http://blog.csdn.net/sydbc/article/details/17216429
0 个评论
相关问题
- 两个图层投影坐标系都一样,但就是不能叠加在一起。怎么办,求大神指点。一个是县的灾害点,一个是县的行政区划。
- 在Visual studio 2015 中使用 Arcgis API for JavaScript v3.16 如何实现代码智能提示?
- 如何使用脚本或其他方法,将图层属性中属性域原值内容替换为属性域描述?
- 属性表联接excel为什么是空的?
- 基于ArcGIS的CAD数据向GIS数据转换方法
- 为什么栅格没有属性表?
- ArcGIS Server制作的缓存地图服务中,能否实现大比例尺下楼房阴影类似的3d效果?
- 在模型构建器中实现计算几何
- arcgis api for javascript 4.0版本中找不到draw工具,如何实现拉框查询、几何查询?
- ArcGis打开图层后显示unknown units,想要define一个投影坐标系,但数据大小似乎不一致
- ArcEngine 复制镶嵌数据集