`
iwebcode
  • 浏览: 2008000 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

基于ArcGIS10.0和Oracle10g的空间数据管理平台十(C#开发)-空间数据导入RDBMS上-MDB格式

 
阅读更多

前面第九篇把Shape格式导入已经完成了,在这个以后我又陆续加入其他几篇这个项目相关知识介绍的博文,加入那些知识的目的是为了让博友们能够更加清楚这个项目的一切相关知识,以便更好的理解这个项目。现在开始完成MDB格式导入Oracle数据库。

和Shape相同的部分就不在讲解了,只讲解与Shape不同的实现部分!

1.添加一个MDB格式的空间数据文件到导入列表,并显示其相关信息。

这个函数又调用了一个专门用于检测文件是否已经被导入了的函数,实现如下:

2.读出一个MDB格式文件里所有的表相关信息并加载到控件中显示。

由上面的代码可以看出要读取出MDB文件中所有的表结构信息需要分三种情况,一、所有在数据集里面的表;二、独立(游离)的表;三、属性表。每读取一个表结构的信息就检测这个表的字段是否符合数据库中定义好的数据结构,完成这个功能是调用函数CheckFields,这个函数定义和实现如下所示:

3.增加目录,把目录下的所有MDB文件加载进来,在控件中显示这些文件的相关信息。

这个函数依次变量目录下的所有MDB文件,然后调用函数fileIsExist判断文件是否已经加载了,最后调用前面介绍的函数addTableNameToDataGridView把具体的文件相关信息加载到控件中显示。

4.从MDB文件信息显示控件中删除一个文件,并联动删除在另一个控件中的相应的表结构信息。

5.通过MDB文件找到要素类或者属性表,查找的方法就是依次遍历然后对比给定的表名称。

6.转换所有导入的MDB文件中的数据到SDE数据库中。

从上面代码可以看出,在导入的时候分为属性表和空间表,因为空间表和属性表导入方法不同。在导入的时候又要首先判断是否在Oracle数据库中是否已经存在对应的表,如果没有就需要创建一个新表来保持导入的数据,这个功能在函数MapOperation类ConvertFeatureClass实现,这个函数已经讲解,完成导入以后因为是新建的表结构,就需要在数据字典中添加一条记录,记录的内容就是表的相关信息。如果空间表已经存在那么就调用函数AddMDBFeatureClassToSDE完成数据的追加导入,这个函数实现如下:

这个函数又调用mdb2fc函数一个一个字段和值的完成数据导入,继续看这个函数的实现:

如果是属性表也要首先考虑是否在Oracle数据库存在表结构了,不存在同样需要先要创建一个新的表结构,并且在数据字典中添加一条表的相关信息的记录。创建表以后调用FusedIndexTable函数完成数据的具体导入,如果已经存在表结构那么就直接调用FusedIndexTable函数导入数据,这个函数实现如下所示:

7.点击完成按钮完成导入数据的功能,这种导入数据上上面介绍的那个函数mdbfileToSDE。

在导入的时候根据导入的选项来决定具体怎样导入,例如是否检查控件参考系或者时候清除原表中已有的数据。

8.将mdb中的要素数据集转换到sde数据库中

9.当在表信息的控件显示列中选择一个表的时候就在另一个控件中显示表的字段相关信息。

10.打开检查字段信息的对话框,具体检查的实现在以后单独一篇博客具体讲解。

11.当表的名称信息改变时,对于是否在Oracle数据库中已存在的信息从新检查并更新显示信息

12.总结

MDB空间数据格式的导入所有功能基本介绍完毕。还是检查字段相关信息最复杂。





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics