视频图像处理系列索引 || Arcgis/Engine/Server开发索引 || Web Map Gis开发索引 || jquery表格组件 JQGrid索引
WPF MVVM模式开发实现简明教程索引 || ArcGIS Runtime WPF(.net C#)开发简明教程索引

Join Attributes

1.

IWorkspaceFactory2 workspaceFactory = new ShapefileWorkspaceFactoryClass() as IWorkspaceFactory2;

            IWorkspace workspace = workspaceFactory.OpenFromFile(@"E:\", 0);

            IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;

            IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(“a”);

            IFeatureClass featureClass2 = featureWorkspace.OpenFeatureClass( "b");

 

            AddJoin aj = new AddJoin();

            aj.in_field = "ID";

            aj.in_layer_or_view = featureClass2; // @"E:\jhl\" + Functions.g_ROAD + "_SpatialJoin";

            aj.join_field = "FID";

            aj.join_table = @"E:\a.shp";

            //aj.out_layer_or_view = Functions.g_ROAD + "_SpatialJoin";

            aj.join_type = "KEEP_ALL";

            Geoprocessor gp = new Geoprocessor();

            //gp.OverwriteOutput = true;

            gp.Execute(aj, null);

 

 

2.

//// Build a memory relationship class.

            Type memRelClassFactoryType =Type.GetTypeFromProgID("esriGeodatabase.MemoryRelationshipClassFactory");

            IMemoryRelationshipClassFactory memRelClassFactory = (IMemoryRelationshipClassFactory)Activator.CreateInstance(memRelClassFactoryType);

            IRelationshipClass relationshipClass = memRelClassFactory.Open("a", featureClass2, "ID", (IObjectClass)featureClass,

                "FID", "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);

 

 

3.

            

// Create the query definition.

            IQueryDef queryDef = featureWorkspace.CreateQueryDef();

            // Provide a list of tables to join.

            queryDef.Tables = "a,b";

            queryDef.Tables += "";

            // Set the subfields and the WhereClause (in this case, the join condition).

            queryDef.SubFields = "*";

            queryDef.WhereClause = "a.ID = b.FID + 1";

 

            // Make the new TableQueryName.

            IQueryName2 queryName2 = (IQueryName2)new TableQueryNameClass();

            queryName2.QueryDef = queryDef;

            queryName2.PrimaryKey = "ID";

            queryName2.CopyLocally = true;

 

            IDataset workspaceDataset = (IDataset)featureWorkspace;

            IWorkspaceName workspaceName = (IWorkspaceName)workspaceDataset.FullName;

 

            // Set the workspace and name of the new QueryTable.

            IDatasetName datasetName = (IDatasetName)queryName2;

            datasetName.WorkspaceName = workspaceName;

            datasetName.Name = "Join";

 

            // Open the virtual table.

            IName name = (IName)queryName2;

            ITable table = (ITable)name.Open();

 

 

posted @ 2016-04-15 10:56  jhlong  阅读(569)  评论(0编辑  收藏  举报
海龙的博客 jhlong@cnblogs 版权所有© 转载请注明链接.有用请推荐一下
代码全部经过本人测试,但不保证复制粘贴就正常运行,更不保证能解决你的问题,请结合前后代码及描述理解后修改和使用