在Esri地理数据库之间复制域(和唯一域)?


23

有时,我需要将域从一个地理数据库复制到另一个地理数据库(没有要素类或表)。

过去,我以几种不同的方式来完成此操作,但是每种方法都不像我认为的那样简单(或者也许我错过了一个CopyDomain工具)。

您使用什么方法来完成此任务?


我至少知道另外两种方法:也许不值得“接受答案”,但是绝对值得声誉。如果没有其他人提供它们作为答案,我会在几天后发布它们。
杰伊·康明斯

请发布其他解决方案,如果有价值,社区将投票赞成:)
MathiasWestin 2010年

在某些情况下,我不得不向非GIS DBA解释域如何像表一样,但是没有存储为可通过SQL访问的表。也许答案应该是非GIS DBA可以理解的语言。
Kirk Kuykendall

Answers:


10

http://arcscripts.esri.com/details.asp?dbid=14729

这是一个ArcCatalog扩展,允许您在地理数据库之间复制域。

我认为它仅是9.3.1 SP1的最新版本,因此它可能不适用于ArcGIS 10。


+1我在ArcGIS 10上,但我故意使问题不限任何版本。我确实获得了9.3.1扩展名,可以在ArcCatalog 10中使用。我没有在上下文菜单中获得新命令,但是我能够将命令添加到工具栏并以这种方式使用。
杰·康明斯

好的,很高兴能成功。你应该让笔者延长了解上下文菜单命令不能在ArcCatalog 10.工作
布里特韦斯科特

我确实通知了作者(到目前为止,cri)。另外,我在星期五将SP1应用于ArcGIS 10。现在,当ArcCatalog启动时,复制域的arccatalog扩展错误。
杰伊·康明斯

这很有道理,希望他会尽快进行更新。
Britt Wescott 2010年


3

这种方法更容易破解,仅适用于1个或几个域。

  1. 在原始地理数据库中,创建一个虚拟要素类,其虚拟字段与您要复制的域的字段数据类型相匹配。

  2. 将虚拟要素类复制/粘贴到新的地理数据库中,直到将域分配给另一个要素类中的字段后再删除它。


3

我根据上周发现的一些vba代码编写了一个快速命令行arcobjects exe 。这不是复杂的代码。

Ex e在这里
AVI电影在这里

精美打印:该exe编译为10.0 / ArcEditor许可证(该许可证目前已部分硬编码)。

替代文字


我尝试了此操作,但出现异常错误CopyDomain.exe canvec_blank.gdb target.gdb * Exception from HRESULT: 0x80040228 Exception from HRESULT: 0x80040228。有任何想法吗?
马特·威尔基

不确定,但是您是ArcEditor许可证吗?那是一个快速肮脏的工具,因此它可能不是最优雅的工具。你有Visual Studio吗?该人士是在这里:code.google.com/p/umbriel/source/browse/...
周杰伦康明斯

3

这是使用XML Workspace Documents导出/导入域的方法。

要求

  • ArcGIS Desktop 10.XX版
  • ArcGIS Pro最新(已测试)
  • 记事本++,记事本或您喜欢的文本编辑器

程序

从源导出XML

  1. 选择您的源地理数据库
  2. 导出XML工作区文档

出口

  1. 仅导出架构。元数据是可选的(红色箭头)。

仅架构

编辑XML

在该步骤中将删除数据集架构。

  1. 打开XML文件。
  2. (可选)打开自动换行功能,使所有内容更易于查看。
  3. 删除和标签之间的所有内容。它看起来应该像这样:<DatasetDefinitions xsi:type='esri:ArrayOfDataElement'></DatasetDefinitions>

xml编辑

  1. 别的一切。
  2. 保存XML文件

导入到目标

  1. 查找/创建新的地理数据库
  2. 导入XML工作区文档...
  3. 选择编辑的XML并继续。
  4. 做完了

故障排除

  • Esri XML工作区规范非常具体。如果导入步骤出现错误,则可能是架构错误。查看XML或再次将其导出并重复。不要删除任何多余的插入符号或换行符。
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.