1.

IWorkspaceFactory2 workspaceFactory = new ShapefileWorkspaceFactoryClass() as IWorkspaceFactory2;

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

            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();

最新文章

  1. asp.net中Ajax控件的用途(一)
  2. Something about "for"
  3. (十一) 一起学 Unix 环境高级编程 (APUE) 之 高级 IO
  4. Java并发编程-ConcurrentHashMap
  5. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (二) 图片验证码的识别
  6. No valid host was found
  7. 【转载】nginx 并发数问题思考:worker_connections,worker_processes与 max clients
  8. UILabel,UITextField,UIButton三大基础控件总结
  9. android 在5.0以后不允许使用隐式Intent方式来启动Service
  10. 可用fidder测试的一些安全测试点
  11. laravel5 数据库连接问题
  12. Open Live Writer
  13. babel在项目里的使用
  14. [nginx]站点目录及文件访问控制
  15. Linux服务器配置---ssh配置
  16. vim+cscope简易教程
  17. Java运行机制及相关术语
  18. 如何将cordova导入Android studio,只需两步即可
  19. POJ2481(树状数组:统计数字 出现个数)
  20. js能否实现截图,截图之后的图片数据再下载到本地?

热门文章

  1. springMVC基础controller类
  2. ​Si2151/41 6th Generation Silicon TV Tuner ICs
  3. mysql常用基本操作
  4. HDU1329 Hanoi Tower Troubles Again!——S.B.S.
  5. C++11 之 并发编程 (一)
  6. Win10 Sql2008R2 在关闭【0x80041033】
  7. 选中多个<ul>中的第一个<li>方法
  8. ionic android双击退出应用和物理返回按钮隐藏键盘的实现
  9. 82 fsck-检查与修复 Linux 档案系统
  10. 软件工程(FZU2015)赛季得分榜,第9回合