在ArcEngine下实现图层属性过滤的两种方法
2013-12-09 09:03
260 查看
有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求。
按下面介绍的方法可轻松实现图层属性过滤显示:
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创建图层、加载到地图的过程就比较简单了
按下面介绍的方法可轻松实现图层属性过滤显示:
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创建图层、加载到地图的过程就比较简单了
相关文章推荐
- 在ArcEngine下实现图层属性过滤的两种方法
- 在ArcEngine下实现图层属性过滤的两种方法
- 在ArcEngine下实现图层属性过滤的两种方法
- 在ArcEngine下实现图层属性过滤的两种方法 转载http://www.gisall.com/html/72/124272-2990.html
- ArcEngine实现图层地物合并的简单方法
- 属性动画的两种实现方法
- fastjson,一行代码实现自定义过滤某些属性,通用方法
- vue获取DOM元素并设置属性的两种实现方法
- JQuery表格内容过滤的实现方法
- python语言实现阶乘的两种方法---递归和迭代
- PHP使用方法重载实现动态创建属性的get和set方法
- LVS的两种实现方法(heartbeat与KeepAlived)
- 一列数字的规则如下;1,1,2,3,5,8,13,21,34........ 求第30位数字是多少,用递规和非递归两种方法算法实现
- C#利用反射来判断对象是否包含某个属性的实现方法
- PHP实现更新中间关联表数据的两种方法
- C#实现数字字符串左补齐0的两种方法
- ArcEngine 几何对象录入两种方法说明
- 用struts2 完成一个简单的通讯录,实现增删改查,分页,文件上传(头像),表单验证(两种方法)
- Unity用法(属性注入的两种方法)
- ios开发之倒计时实现的两种方法