基于AE的个人地理数据库(mdb格式)导入到企业级数据库(sde数据库中)中(C#)[原创] - 圣殿GIS

njlhb 2021-08-08 原文


基于AE的个人地理数据库(mdb格式)导入到企业级数据库(sde数据库中)中(C#)[原创]

  基于AE的个人地理数据库(mdb格式)导入到企业级数据库(sde数据库中,采用Oracle数据库)中(C#).

个人地理数据库有数据集,导入到企业级数据库后没有数据集,只有要素类。

private void btnPGD2EGD_Click(object sender, EventArgs e)
        {
            try
            {
                string pWorkspaceName = strName;
                string sdeUser = pSDEwsp.ConnectionProperties.GetProperty(“USER”).ToString();
                IWorkspaceFactory pMDBwspf = new AccessWorkspaceFactoryClass();
                pMDBwsp = pMDBwspf.OpenFromFile(pWorkspaceName, 0);
                Cursor = Cursors.WaitCursor;
                if (pSDEwsp != null)
                {
                    //progressBar.Visible = true;
                    DataVonverter(ref pMDBwsp, ref pSDEwsp, sdeUser);//数据导入
                    progressBar.Visible = false;
                }

                Cursor = Cursors.Default;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            MessageBox.Show(“mdb数据上传SDE库成功!”, “数据导入”, MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Close();
           
        }

  public void DataVonverter(ref IWorkspace FromWorkspace, ref IWorkspace ToWorkspace,string SDEUser)
        {
            if (SDEUser == “”) return;
            IFeatureWorkspace pOutFeatureWorkspace;
            IFeatureWorkspace pInFeatureWorkspace;
            IFeatureClass pFeatureClass;
            IFeatureClass pOutFeatureClass;
            IWorkspace2 pWorkspace2;
            IEnumDataset pEnumDataset;
            IDataset pOutDataset;

            IFeatureDataset pOutFeatureDataset;
            IEnumFeatureClass pEnumFeatureClass;
            IFeatureClassContainer pFeatureclassContainer;

            pOutFeatureWorkspace = (IFeatureWorkspace)ToWorkspace;
            pInFeatureWorkspace = (IFeatureWorkspace)FromWorkspace;
            pWorkspace2 = (IWorkspace2)ToWorkspace;

            pEnumDataset = (IEnumDataset)FromWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);//获得MDB端的所有数据集
            pOutDataset = (IDataset)pEnumDataset.Next();

            while (pOutDataset != null)//遍历数据集
            {
                pOutFeatureDataset = (IFeatureDataset)pOutDataset;
                if (pOutFeatureDataset != null)
                {
                    pFeatureclassContainer = (IFeatureClassContainer)pOutFeatureDataset;
                    pEnumFeatureClass = (IEnumFeatureClass)pFeatureclassContainer.Classes;
                    pFeatureClass = (IFeatureClass)pEnumFeatureClass.Next();
                    while (pFeatureClass != null)//在每一个数据集中遍历数据层IFeatureClass
                    {
                        if (!pFeatureClass.AliasName.Contains(“UnClassfied”))
                        {
                            if (pWorkspace2.get_NameExists(esriDatasetType.esriDTFeatureClass, SDEUser + “.” + pFeatureClass.AliasName))
                            {
                                pOutFeatureClass = pOutFeatureWorkspace.OpenFeatureClass(SDEUser + “.” + pFeatureClass.AliasName);
                                fc2fc(ref pFeatureClass, ref pOutFeatureClass);
                            }
                            else
                            {
                                fc2fc(ref pFeatureClass, ref ToWorkspace);
                            }
                        }
                        pFeatureClass = (IFeatureClass)pEnumFeatureClass.Next();
                    }
                }
                pOutDataset = (IDataset)pEnumDataset.Next();
            }

            ITable pInTable;
            pInTable = pInFeatureWorkspace.OpenTable(“AIndexInfo”);
            //如果SDE数据库中已经有AIndexInfo表,则将新的记录追加进去
            if (pWorkspace2.get_NameExists(esriDatasetType.esriDTTable, SDEUser + “.” + “AIndexInfo”))
            {
                ITable pOutTable = pOutFeatureWorkspace.OpenTable(“AIndexInfo”);
                FusedIndexTable(ref pInTable, ref pOutTable);
            }
            else//如果SDE数据库中没有AIndexInfo表,则重新生成和来源端一样的AIndexInfo表
            {
                FusedIndexTable(ref pInTable, ref ToWorkspace);
            }
        }

转载时,请注明出处:http://www.cnblogs.com/njlhb/archive/2007/06/17/786242.html 和作者:GIS云中鹤


 
发表于
2007-06-17 10:08 
圣殿GIS 
阅读(4824
评论(5
编辑 
收藏 
举报

 

版权声明:本文为njlhb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/njlhb/archive/2007/06/21/786242.html

基于AE的个人地理数据库(mdb格式)导入到企业级数据库(sde数据库中)中(C#)[原创] - 圣殿GIS的更多相关文章

  1. macbook pro 2016 2017 15寸 雷电3 外接显卡 epu 简单教程(不修改UEFI) – Dr.Persona

    macbook pro 2016 2017 15寸 雷电3 外接显卡 epu 简单教程(不修改UEFI) 雷电 […]...

  2. 泥瓦匠:秒杀架构设计实践思路(一)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关 […]...

  3. linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用

    lsof命令是什么? 可以列出被进程所打开的文件的信息。被打开的文件可以是 1.普通的文件,2.目录  3.网 […]...

  4. Linux环境下mysql常用命令 – Findsth

    Linux环境下mysql常用命令 #查看table_name 表结构desc table_name; #更新 […]...

  5. each循环方法跳出 – 墨染丶

    each循环方法跳出   #####.each { it -> if (!it.####) { retu […]...

  6. Eclipse基础--java环境变量设置 – 笨笨

    Eclipse基础--java环境变量设置 Eclipse基础--java环境变量设置 http://blog […]...

  7. 关于在Eclipse中导入现有项目 – kejian of 20

    在Eclipse新建一个文件时,系统会自动生成一个.project文件,在用file  import 导入一个 […]...

  8. C、C++、Java、JavaScript、PHP、Python有啥区别,终于搞清楚了 – cq指尖代码

    C、C++、Java、JavaScript、PHP、Python有啥区别,终于搞清楚了 c语言主要用于底层和驱 […]...

随机推荐

  1. 把玩爬虫框架Gecco

    如果你现在接到一个任务,获取某某行业下的分类。 作为一个非该领域专家,没有深厚的运营经验功底,要提供一套摆的上 […]...

  2. surging 社区版本支持.net core 3.1

    简介 surging 经过两年多的研发,微服务引擎已经略有雏形,也承蒙各位的厚爱, GitHub上收获了将近2 […]...

  3. c++之你真的了解vector的erase吗

    以下针对vector容器,编译环境为linux qt 4.7 篇幅较长,耐心看完,有错误欢迎指出 erase的 […]...

  4. SSH三大框架的搭建整合(struts2+spring+hibernate)

    SSH三大框架的搭建整合(struts2+spring+hibernate) SSH说的上是javaweb经典 […]...

  5. Java匹马行天下之一顿操作猛如虎,框架作用知多少?

    流行框架:   框架就是开发人员定义好的一套模板,程序员只需要往模板中添加响应的代码即可,填完代码,项目就完成 […]...

  6. 遗传算法

    1、遗传算法的概念        遗传算法是借鉴生物进化过程而提出的一种算法,这是一种随机化算法,是建立在不确 […]...

  7. awk命令

    awk 手册 原文 Table of Contents 1. awk简介 2. awk命令格式和选项 2.1. […]...

  8. hdfs的JAVA必会操作

    hdfs的必会操作 创建目录 //创建目录 public static void mkdir(String f […]...

展开目录

目录导航