使用ArcPy更改为历史版本?


9

我在尝试使用Python和arcpy.ChangeVersion_management更改为SDE要素类的历史版本时遇到问题。

我可以使用ArcMap手动将版本更改为特定的日期和时间。我还能够使用ModelBuilder完全自动化该过程。

当我将ModelBuilder模型导出到python脚本时,脚本运行无误,但所选的版本是带有今天日期的历史版本,而不是选择为date参数的日期。

使用Arcmap和Python窗口(地理处理-> Python),我也可以运行python代码而不会出现错误,结果是相同的。使用当前日期选择历史图层,而不选择使用日期作为日期参数。

这是我正在执行的Python语法:

arcpy.ChangeVersion_management("Parcels", "HISTORICAL", "", "7/1/2013 4:30:00 PM")

我也使用以下方法得到相同的结果:

historyDate = datetime.datetime(2011, 7, 1)
arcpy.ChangeVersion_management("Parcels", "HISTORICAL", "", historyDate)

而以下引发RuntimeError:

historyDate = datetime.date(2011, 7, 1)
arcpy.ChangeVersion_management("Parcel", "HISTORICAL", "", historyDate)

这是一个已知的错误,还是我会以错误的方式处理?


我的猜测是定义日期的方式存在问题。该工具的参数期望该值是Date对象,而不是String(resources.arcgis.com/en/help/main/10.2/index.html#//…)。有一个有用的ESRI的论坛张贴在此:forums.arcgis.com/threads/...
亚历Tereshenkov

该行代码是从ArcGIS Model Builders导出到Python脚本菜单命令生成的。我将python代码更改为使用Date对象,并且结果相同。提供的帖子中的解决方法是让最终用户从历史版本开始,然后使用该功能更改为当前版本。由于我正在编写整个过程的脚本,并且历史日期来自SQL查询,因此该解决方案对我不起作用。
布拉德·韦尔伯恩

1
我明白。然后,您可能应该联系Esri技术支持。我也无法在10.2.2上的arcpy上使用此东西。您可以发布代码,尽管在问题正文中,因为不清楚日期对象以何种格式以及如何向ChangeVersion工具提供此参数,因此可以发布代码。我的直觉是,我们要么找不到一种向工具提供日期对象的正确方法(为此我使用了脚本工具GUI,即日期类型的参数),要么此工具存在错误。
Alex Tereshenkov 2014年

2
亚历克斯,谢谢您抽出宝贵的时间对此进行研究。我的下一步似乎是联系Esri技术支持。收到他们的答复后,我将更新问题。
布拉德·韦尔伯恩

Answers:


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.