如何修复破碎的链接在mxd与脚本?

5674
9
05-08-2012 04:00
haifaAl_Yazeedi
新的因素
你好

是否有一种方法来修复破碎的链接在mxd使用脚本?

我们有很多层的旧mxd(200个shapefile),我们决定使用我们的命名标准重命名shapefile,然后将它们移动到ArcSDE,但重新链接的工作是痛苦的。arcpy有办法吗?映射脚本?

我尝试了ESRI的一些工具来修复破碎的链接,但仍然很痛苦。我需要找到一个脚本,将做以下工作:

将层的旧路径(例如:C:\Test.shp)替换为旧mxd内的新路径(例如:SDE.Blocks)。

谢谢,
海法
标签(2)
0荣誉
9回复
KorySteele
通过
新贡献者III
我也急切地等待着对此的回应。
我经常需要在HDD和共享驱动器之间移动.mxds。这个问题是唯一的阻力。
0荣誉
TimothyHales
通过 Esri杰出贡献者
Esri杰出贡献者
你可以使用arcpy。映射以更改MXD内的数据源路径。

导入arcpy mxd = arcpy.mapping. mapdocument (r"C:\Project\Project.mxd") mxd。findAndReplaceWorkspacePaths (r“C: \ \数据项目”r“C: \ \ Data2项目”)mxd。saveACopy(r"C:\Project\Project2.mxd") del mxd


使用arcpy.mapping更新和修复数据源
MichaelVolz
通过
尊敬的贡献者
halyazeedi:

我认为您需要从thales007修改脚本,以使目标路径是到您使用ArcCatalog保存在计算机上的SDE的连接。带有findandreplaceworkspaceppaths的第三行是前两行(已被注释掉)的复合,其中源是当前shapefile,目标是SDE geodatabase。在从shapefile转换到SDE的过程中,您可能会遇到一些需要解决的字段类型问题。您还需要确保从您正在使用的SDE连接中拥有对SDE中所有相关特性类的读访问权。

进口arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project_default.mxd")
“mxd。findAndReplaceWorkspacePaths (r“C: \ \数据项目”r“C: \ \ Data2项目”)
“mxd。find dandreplaceworkspaceppaths (r"C:\项目\连接到默认。, r"C:\项目\连接到版本1.sde")
mxd。查找工作空间路径(r"C:\Project\Data", r"C:\Project\Connection to Version1.sde")

mxd.saveACopy (r " C: \ \ Project_V1.mxd项目”)
德尔mxd
0荣誉
haifaAl_Yazeedi
新的因素
谢谢大家的帮助。

这里有两个问题,第一个是路径从形状文件改变到sde,第二个问题是形状文件的名称也改变了..当我们导入形状文件到sde,我们重命名它(例如:测试。shp改名为sde.Blocks)。

有办法你修复这两个问题使用一个脚本?

谢谢,
海法
0荣誉
MichaelVolz
通过
尊敬的贡献者
层。replaceDataSource是您正在寻找的方法。我相信这个脚本会更复杂,因为您需要将旧数据源映射到新数据源。我通过调用一个def函数来实现这一点,该函数查找一个特定的输入层名,并将其映射到带有新参数的新层名。在你的情况下,这个def可能会变得相当大,因为你说你有200个shapefile在你的mxd(s),需要链接到新的SDE层。

来自thales007的引用有此文档的链接。
0荣誉
AntoineCantin
通过
新贡献者III

我知道这是一个旧的帖子,但是,我想知道是否有一种方法来使用这个脚本,如果我的shapefiles是在两个不同的文档?

谢谢,

0荣誉
WesMiller
通过
定期捐助者III

是的,您必须在每个mxd上运行脚本,其中有断开的链接。

RebeccaStrauch__GISP
尊敬的贡献者

fwiw,我有一个插件(与10.2.x/10.3.x工作),可以查看文件夹(和子文件夹)中的所有mxd,提供所有坏链接的报告,并允许您更新一个.csv文件,然后修复大多数(如果不是全部)坏链接)。总是先对副本进行测试……但是,如果你感兴趣的话

Python插件,用于数据库存和“断开链接”修复。

不是完美的,可能不是为两个mxd文档所做的努力…但如果你有很多,或者如果机器/路径改变,可能是值得的。

0荣誉
AntoineCantin
通过
新贡献者III

我会试试的,谢谢!

0荣誉