/****>在我们使用过程中,经常使用Join进行连接,以下代码就是来实现join功能
<p style="margin-top:0px;margin-bottom:0px;padding:0px;font-family:Arial;font-size:14px;line- style=" font-family:arial;font-size:14px;line-height:26px;"="">
ArcGIS Engine9.3/9.3.1
VS2008
关于版本的接口差别参考:http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Type_changes_between_9_3_and_10/000100000408000000/
在我们使用过程中,经常使用Join进行连接,以下代码就是来实现join功能
- using System;
- using System.Runtime.InteropServices;
- using ESRI.ArcGIS.ADF;
- using ESRI.ArcGIS.esriSystem;
- using ESRI.ArcGIS.Geodatabase;
- using ESRI.ArcGIS.Geometry;
-
- namespace JoinDemo
- {
- public class JoinDemo
- {
- public static void Main(string[] args)
- {
- #region Licensing
-
-
- IAoInitialize aoInitialize = new AoInitializeClass();
- esriLicenseStatus licenseStatus = aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo);
- if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut)
- {
- Console.WriteLine("Unable to check-out an ArcInfo license, error code is {0}", licenseStatus);
- return;
- }
- #endregion
-
-
- Type fgdbFactoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
- IWorkspaceFactory fgdbWorkspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(fgdbFactoryType);
- IWorkspace fgdbWorkspace = fgdbWorkspaceFactory.OpenFromFile(@"..\..\..\Data\JoinDemo.gdb", 0);
- IFeatureWorkspace fgdbFeatureWorkspace = (IFeatureWorkspace)fgdbWorkspace;
- IFeatureClass featureClass = fgdbFeatureWorkspace.OpenFeatureClass("Parcels");
-
-
- Type shpFactoryType = Type.GetTypeFromProgID("esriDataSourcesFile.ShapefileWorkspaceFactory");
- IWorkspaceFactory shpWorkspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(shpFactoryType);
- IWorkspace shpWorkspace = shpWorkspaceFactory.OpenFromFile(@"..\..\..\Data", 0);
- IFeatureWorkspace shpFeatureWorkspace = (IFeatureWorkspace)shpWorkspace;
- IObjectClass objectClass = (IObjectClass)shpFeatureWorkspace.OpenTable("Owners");
-
-
- IMemoryRelationshipClassFactory memRelClassFactory = new MemoryRelationshipClassFactoryClass();
- IRelationshipClass relationshipClass = memRelClassFactory.Open("ParcelsOwners",
- featureClass, "PROPERTY_I", objectClass, "PROPERTY_I", "Is Owned By", "Owns",
- esriRelCardinality.esriRelCardinalityOneToOne);
-
-
- IRelQueryTableFactory relQueryTableFactory = new RelQueryTableFactoryClass();
- ITable relQueryTable = (ITable)relQueryTableFactory.Open(relationshipClass,
- true, null, null, "", true, false);
-
-
- IQueryFilter queryFilter = new QueryFilterClass
- {
- SubFields = "Parcels.PROPERTY_I, Owners.OWNER_NAME",
- WhereClause = "Parcels.SHAPE_AREA > 300000"
- };
-
-
- int propertyIdIndex = relQueryTable.FindField("Parcels.PROPERTY_I");
- int ownerNameIndex = relQueryTable.FindField("Owners.OWNER_NAME");
-
-