Переход на Историческую версию с использованием ArcPy?

9

У меня возникла проблема при попытке перейти на историческую версию класса пространственных объектов SDE с помощью Python и arcpy.ChangeVersion_management .

Я могу вручную изменить версию на определенную дату и время, используя ArcMap. Я также могу полностью автоматизировать процесс с помощью ModelBuilder.

Когда я экспортирую модель ModelBuilder в скрипт Python, скрипт запускается без ошибок, но выбранная версия является исторической версией с текущей датой, а не с датой, выбранной в качестве параметра даты.

Используя 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/…
Алекс Терешенков
Строка кода была сгенерирована из экспорта из ArcGIS Model Builders в команду меню Python Script. Я изменил код Python, чтобы использовать объект Date, и результаты совпадают. Обходной путь из предоставленной публикации заключается в том, чтобы конечный пользователь начал с исторической версии, а затем использовал функцию для перехода к текущей версии. Этот обходной путь не будет работать для меня, потому что я пишу сценарий всего процесса, а историческая дата происходит из SQL-запроса.
Брэд Уэлборн
1
Я понимаю. Возможно, вам следует обратиться в службу технической поддержки Esri. Я не смог заставить эту штуку работать с arcpy на 10.2.2. Вы можете опубликовать свой код, хотя и в теле вопроса, поскольку неясно, в каком формате вы получаете объект даты и как вы передаете этот параметр в инструмент ChangeVersion. У меня такое ощущение, что мы либо не можем найти правильный способ предоставления объекта даты в инструмент (для этого я использовал GUI инструмента-скрипта, параметр типа Date), либо есть ошибка с этим инструментом.
Алексей Терешенков
2
Алекс, спасибо, что нашли время посмотреть на это. Похоже, что связаться со службой технической поддержки Esri - это мой следующий шаг. Я обновлю вопрос, когда получу ответ от них.
Брэд Уэлборн

Ответы:

6

После некоторых дальнейших исследований я подтвердил, что это известная ошибка. Надеемся, что добавление этой информации здесь сэкономит кому-то время в будущем, так как это было нелегко найти с помощью Google или сайта Esri.

Ошибка NIM-087927.
Представлено: 8 января 2013 г.
Статус: открыто
http://support.esri.com/ru/bugs/nimbus/TklNMDg3OTI3.

Брэд Уэлборн
источник