如何比较来自两个文件地理数据库的架构?


13

我们有模板地理数据库,我们将其发送给区域数据创建者。他们更新这些地理数据库,并数字化预定义要素类中其区域中的所有数据。

现在我们有了File地理数据库,我们发现经常会修改许多要素类。也许可以添加或删除字段。在某些情况下,要素类本身会被删除或创建一个新的要素类。

我想得到一份报告,指出哪些要素类和表已更改,以及公用表和要素类中的不同字段。

我已经看过几个问题,例如:

但是这些问题给出的答案并没有帮助。


我不确定SE中的协议是否包含坏点,但我对您有一个相关的问题,Devdatta:是否有一个工具可以从X射线外接程序中获取您的解决方案,并解决GeoDB / XML?
凯尔·谢泼德

@KyleShepard通常的过程是问一个新问题,一个新问题。您可以链接到一个旧问题,如果它包含相关信息。为了回答您的问题,我还没有找到类似的东西。也许您可以提出一个新问题,而发现某事的人将回答它。
Devdatta Tengshe 2013年

Answers:


9

有一个很棒的名为XCray的ArcCatalog加载项。它具有许多功能,但我们最终使用的功能是“工具”菜单中的“分析差异”工具。

它为您找到了地理数据库和XML工作区文档之间的区别。我们只是将模板地理数据库的架构导出为XML,然后将不同的地理数据库进行了比较。

只需花费几秒钟即可显示出两个地理数据库中缺少或不同的所有要素类和字段的报告。


这看起来很棒。它在10.1上有效吗?
Fezter

@Fezter:这似乎是10.1
版本的示例

7

我认为编写python脚本最适合您尝试找出的问题。以下是常规脚本工作流程:

首先将地理数据库1(geo1)与地理数据库2(geo2)进行比较

  1. 在geo1中搜索/循环并获取要素类(fc)1名称,并在其他geo2中查找相同的fc名称(如果在geo2中找不到fc1名称,则将第一个fc名称写入文本文件)
  2. 如果步骤1 fc1 == fc2名称,则列出 fc1 中的字段并搜索fc2中的字段,如果在fc2中找不到fc1字段名称,则将fc1字段名称写入文本文件
  3. 接下来,在geo1中搜索或列出域,然后在geo2中查找相同的域名,如果geo1 domain == geo2 domain,则获取域1的第一个编码值,并查看它是否在域2中,如果不存在,则写出geo1域名或域编码值到文本文件。

反过来比较geo2和geo1

请按照上述步骤1-3,但从相反的顺序将geo2转换为geo1

脚本完成后,检查结果文本文件是否可能存在差异。


3

听起来您已经有了很好的答案。但是对于希望了解其地理数据库架构的其他人,我也可以推荐由Esri团队之一编写的独立程序ArcGIS Diagrammer

ArcGIS Diagrammer是GIS专业人员用来创建,编辑或分析地理数据库架构的生产力工具。架构在Microsoft Visual Studio用户熟悉的环境中以可编辑图形的形式呈现。本质上,ArcGIS Diagrammer是ESRI的xml工作区文档的可视化编辑器,可以在ArcMap或ArcCatalog中创建该文档。


需要说明的是,它不需要 Visio-但它看起来有点“ Visio用户熟悉”,因为他使用了类似的布局
Stephen Lead

你是对的。看起来我弄错了。
Devdatta Tengshe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.