esri的老师,几十万个图斑,根据条件返回featureclass,看了帮助文档只对gdb有效,shapefile无效,是否有支持shapefile的接口呢?
public IFeatureClass GetFeatureLayer(string path, string featureLayerName, string whereClause)
{
var featureWorkspace = (IFeatureWorkspace)OpenWorkspace(path);
IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(featureLayerName);
IQueryDef queryDef = featureWorkspace.CreateQueryDef();
queryDef.Tables = featureLayerName;
queryDef.WhereClause = whereClause;
IQueryName2 queryName2 = new FeatureQueryNameClass();
queryName2.CopyLocally = false;
queryName2.PrimaryKey = featureClass.OIDFieldName;
queryName2.QueryDef = queryDef;
IDataset dataset = (IDataset)featureWorkspace;
IWorkspaceName workspaceName = (IWorkspaceName)dataset.FullName;
IDatasetName datasetName = (IDatasetName)queryName2;
datasetName.WorkspaceName = workspaceName;
datasetName.Name = featureLayerName;
IName name = (IName)datasetName;
IFeatureClass newfeatureClass = name.Open() as IFeatureClass;
return newfeatureClass;
}
{
var featureWorkspace = (IFeatureWorkspace)OpenWorkspace(path);
IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(featureLayerName);
IQueryDef queryDef = featureWorkspace.CreateQueryDef();
queryDef.Tables = featureLayerName;
queryDef.WhereClause = whereClause;
IQueryName2 queryName2 = new FeatureQueryNameClass();
queryName2.CopyLocally = false;
queryName2.PrimaryKey = featureClass.OIDFieldName;
queryName2.QueryDef = queryDef;
IDataset dataset = (IDataset)featureWorkspace;
IWorkspaceName workspaceName = (IWorkspaceName)dataset.FullName;
IDatasetName datasetName = (IDatasetName)queryName2;
datasetName.WorkspaceName = workspaceName;
datasetName.Name = featureLayerName;
IName name = (IName)datasetName;
IFeatureClass newfeatureClass = name.Open() as IFeatureClass;
return newfeatureClass;
}
3 个回复
gisweis - GIS应用开发
赞同来自: 随意的风
IQueryDef only can be used with ArcSDE, Personal and File Geodatabase data sources.
冯驰
赞同来自:
建议您试下ISpatialFilter IQueryFilter?
随意的风 - GIS
赞同来自:
另:IQueryDef可以直接得到条件选择后的IFeatureClass,而ISpatialFilter、IQueryFilter只能得到条件选择后的IFeatureCursor,遍历得到一个个IFeature,而不是IFeatureClass
要回复问题请先登录或注册
发起人
GIS
相关问题
问题状态
—— 扫技术支持中心微信服务号!
—— 让GIS知乎问答随时随地!