概要
IDE (統合開発環境) から ArcPy を実行すると、文字化けしたエラー メッセージが表示されることがあります。ここでは、その際の処理方法についてご紹介します。

詳細
ArcPy からジオプロセシング ツールを関数として呼び出した際にエラーが発生した場合は arcpy.ExecuteError 例外クラスが生成されます。
ArcGIS では文字列に Unicode 型が使用されているため、arcpy.ExecuteError 例外クラスで取得されているメッセージは Unicode 型になりますが、それを IDE でハンドリングせずに表示している場合は、内部的に UTF-8 でエンコードされた String 型の文字列を、Shift-JIS 環境で表示しているため文字化けしています。
文字化けせずにエラー メッセージを表示させたい場合は arcpy.ExecuteError 例外クラスを使用してエラーをハンドリングし、arcpy.GetMessages() 関数を利用することでジオプロセシング ツールのエラーを文字化けせずに表示することができます。
- Python でのエラー処理
http://desktop.arcgis.com/ja/arcmap/latest/analyze/python/error-handling-with-python.htm
- GetMessages 関数
http://desktop.arcgis.com/ja/arcmap/latest/analyze/arcpy-functions/getmessages.htm
上記関数を利用した場合もメッセージを Unicode 型で取得しておりますが、メッセージの表示時に Unicode 型のまま表示されるため文字化けしません。
サンプル コード
try-except ステートメントを使用して、ジオプロセシング ツールの呼び出し箇所に対してエラーをハンドリングしています。try ステートメント内でエラーが発生すると例外が起こり、except ステートメント以下のコードが実行されます。
サンプルでは、arcpy.CopyFeatures_management 関数 (「フィーチャのコピー」ツール) の実行時に、[入力フィーチャ] パラメーターと [出力フィーチャクラス] パラメーターの名前が同じため、「000725 : <値>:データセット <値> はすでに存在します」というエラーが発生します。
- フィーチャのコピー (Copy Features)
http://desktop.arcgis.com/ja/arcmap/latest/tools/data-management-toolbox/copy-features.htm
#coding:cp932
# ArcPy サイト パッケージのをインポート
import arcview
import arcpy
# ワークスペースの設定
arcpy.env.workspace = r"C:TempSample.gdb"
# 変数の設定
inputFC = "SampleFeatureClass"
outputFC = "SampleFeatureClass"
try:
# 「フィーチャのコピー」ツールの実行
arcpy.CopyFeatures_management(inputFC, outputFC)
except arcpy.ExecuteError:
print "「フィーチャのコピー」ツールの実行時にエラーが発生しました。"
print arcpy.GetMessages()
