ArcPyを使用して履歴バージョンに変更しますか?


9

Pythonとarcpy.ChangeVersion_managementを使用してSDEフィーチャクラスの履歴バージョンに変更しようとすると問題が発生します。

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)

これは既知のバグですか、それとも間違った方法で進んでいますか?


日付の定義方法に問題があると思います。ツールのパラメーターは、値が文字列ではなく日付オブジェクトであることを期待します(resources.arcgis.com/en/help/main/10.2/index.html#//…)。これには役立つEsriフォーラム投稿があります。forums.arcgis.com
Alex Tereshenkov

コード行は、ArcGISモデルビルダーの[Pythonスクリプトにエクスポート]メニューコマンドから生成されました。Dateオブジェクトを使用するようにPythonコードを変更しましたが、結果は同じです。提供された投稿からの回避策は、エンドユーザーに履歴バージョンを開始してから、関数を使用して現在のバージョンに変更することです。この回避策は、プロセス全体をスクリプト化しているため、過去の日付はSQLクエリから取得されるため、私にとっては機能しません。
Brad Welborn 2014年

1
わかります。おそらくEsriテクニカルサポートに連絡する必要があります。また、10.2.2でarcpyを使用してこの機能を動作させることもできませんでした。コードを公開することもできますが、日付オブジェクトをどの形式で取得するか、およびこのパラメーターをChangeVersionツールにどのように提供するかが明確でないため、質問の本文で公開します。私の直感は、ツールに日付オブジェクトを提供する正しい方法を見つけられない(私はそのためにスクリプトツールGUI、日付タイプのパラメーターを使用した)、またはこのツールにバグがあるということです。
Alex Tereshenkov 2014年

2
アレックス、これを見てくれてありがとう。Esriテクニカルサポートへの連絡が次のステップのようです。回答がありましたら更新します。
Brad Welborn 2014

回答:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.