engine中如何做关联并查询?

engine中如何做关联并查询?
已邀请:

刘峥 - ArcGIS多面手

赞同来自:

【解决办法】:
做关联主要通过IRelationshipClass接口,关联后的查询主要通过ITable.Search方法。



//关联
IWorkspace pWkspace = null; 
pWkspace = repeat.Connect_SDE(); 
IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)pWkspace; 

// Open the participating classes from the workspace. 
IObjectClass originClass = featureWorkspace.OpenFeatureClass(SDE.cities); 
IObjectClass destinationClass = (IObjectClass)featureWorkspace.OpenTable(SDE.attribute); 

// Build a memory relationship class. 
Type memRelClassFactoryType = Type.GetTypeFromProgID( 
esriGeodatabase.MemoryRelationshipClassFactory); 
IMemoryRelationshipClassFactory memRelClassFactory = 
(IMemoryRelationshipClassFactory)Activator.CreateInstance(memRelClassFactoryType) 

IRelationshipClass relationshipClass = memRelClassFactory.Open(ParcelsOwners, 
originClass, OBJECTID, destinationClass, OBJECTID, 
Is Owned By, Owns, esriRelCardinality.esriRelCardinalityOneToOne); 

// Open the RelQueryTable as a feature class. 
Type rqtFactoryType = Type.GetTypeFromProgID(esriGeodatabase.RelQueryTableFactory); 
IRelQueryTableFactory rqtFactory = (IRelQueryTableFactory)Activator.CreateInstance 
(rqtFactoryType); 
ITable relQueryTable = (ITable)rqtFactory.Open(relationshipClass, false, null, null, 
String.Empty, false, false); 

/查询
IQueryFilter qf = new QueryFilterClass(); 
qf.WhereClause = ; 
ICursor cursor = relQueryTable.Search(qf, false); 
int count = 0; 
while (cursor.NextRow()!= null) 

count++; 
} ​

要回复问题请先登录注册