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