FAQ
ArcPy 実行時に発生するエラーの処理方法

ナレッジ番号:3063 | 登録日:2023/05/29 | 更新日:2023/06/21

概要

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

Image

詳細

ArcPy からジオプロセシング ツールを関数として呼び出した際にエラーが発生した場合は arcpy.ExecuteError 例外クラスが生成されます。

 

ArcGIS では文字列に Unicode 型が使用されているため、arcpy.ExecuteError 例外クラスで取得されているメッセージは Unicode 型になりますが、それを IDE でハンドリングせずに表示している場合は、内部的に UTF-8 でエンコードされた String 型の文字列を、Shift-JIS 環境で表示しているため文字化けしています。
文字化けせずにエラー メッセージを表示させたい場合は arcpy.ExecuteError 例外クラスを使用してエラーをハンドリングし、arcpy.GetMessages() 関数を利用することでジオプロセシング ツールのエラーを文字化けせずに表示することができます。

 

上記関数を利用した場合もメッセージを Unicode 型で取得しておりますが、メッセージの表示時に Unicode 型のまま表示されるため文字化けしません。

サンプル コード

try-except ステートメントを使用して、ジオプロセシング ツールの呼び出し箇所に対してエラーをハンドリングしています。try ステートメント内でエラーが発生すると例外が起こり、except ステートメント以下のコードが実行されます。

サンプルでは、arcpy.CopyFeatures_management 関数 (「フィーチャのコピー」ツール) の実行時に、[入力フィーチャ] パラメーターと [出力フィーチャクラス] パラメーターの名前が同じため、「000725 : <値>:データセット <値> はすでに存在します」というエラーが発生します。

 
#coding:cp932
# ArcPy サイト パッケージのをインポート
import arcview
import arcpy

# ワークスペースの設定
arcpy.env.workspace = r"C:\Temp\Sample.gdb"

# 変数の設定
inputFC = "SampleFeatureClass"
outputFC = "SampleFeatureClass"

try:
    # 「フィーチャのコピー」ツールの実行
    arcpy.CopyFeatures_management(inputFC, outputFC)

except arcpy.ExecuteError:
    print "「フィーチャのコピー」ツールの実行時にエラーが発生しました。"
    print arcpy.GetMessages()

Image

メタデータ

種類

製品