ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS Desktop

完全なプロ仕様の GIS

ArcGIS Enterprise

エンタープライズ GIS

ArcGIS Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ArcMap

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • エクステンション

スクリプト ツールのデバッグ

  • print ステートメントの使用
  • デバッガの使用

コーディング エラーはなかなか避けられないものです。エラーの発生箇所を見つけるには、大きく分けて次の 2 つの方法があります。

  • 問題の切り分けに役立つように、なんらかの形式の print ステートメントをコードに追加する方法
  • 対話型のデバッガを使用する方法

print ステートメントの使用

print ステートメントによるバグの検出は、よく使用される確実な方法です。スクリプト ツールからツールの進捗状況ダイアログ ボックスにアクセスできるため、スクリプトを編集して AddMessage、AddWarning、または AddError の呼び出しを組み込むことで、値およびチェックポイント メッセージを進捗状況ダイアログ ボックスに出力できます。また、メッセージを返す独立した方法 (win32ui モジュールの MessageBox メソッドなど) を使用することもできます。この方法では、ポップアップ ダイアログ ボックスが表示されます。ダイアログ ボックスで実行を続行するためにはその都度 [OK] をクリックしなければなりません。そのため、print ステートメントによる方法を使用したほうがスクリプトの実行ペースを速めることができます。以下は、両方の方法を使用した例です。

import arcpy
import win32ui
import win32con
n = 5
# Print message to progress dialog
#
arcpy.AddMessage("Value of n = {}".format(n))
# Issue a popup dialog with OK and Cancel button
#
val = win32ui.MessageBox("Value of n = {}".format(n), "title",
                         win32con.MB_OKCANCEL)
# Based on the button clicked, you can branch execution
#
if val == 1:
    arcpy.AddMessage("You clicked OK")
else:
    arcpy.AddError("You clicked Cancel")
    raise arcpy.ExecuteError, "Execution stops due to Cancel button click"
arcpy.AddMessage("This statement reached")

デバッガの使用

他の方法は、デバッグをサポートしている Python 統合開発環境 (IDE) を使用することです。デバッガを使用してブレーク ポイントを設定し、個々のコード行にステップイン、ステップアウト、ステップオーバーして、コードを一切変更せずに変数の内容を調べることができます。print ステートメントの挿入と比較すると、デバッガの使用は効率がよく、すばやくバグを切り分けることができます。

一般的な IDE としては、次のものが挙げられます。

  • Python を使用してインストールされる Python IDE
  • PythonWin
  • PyScripter
  • 商用システム (Wing IDE や PyCharm など)

デバッガを使用する 1 つの方法は、IDE 内でスクリプトを直接開き、すべてのパラメーターに値が設定されるように変更して、デバッグを続行することです。単純な例では、この方法で正しく機能します。ただし、スクリプトがレイヤーまたはテーブル ビューのパラメーターを使用する場合、これらの変数をリアルタイムで作成する必要があります。フィールド マップや空間参照などの複雑なパラメーターは、変数として作成するのが困難です。

スクリプト ツールのダイアログ ボックスを開き、パラメーターを入力し、コードのデバッグ準備が整った状態で IDE を起動できれば理想的です。これを行うには、次に説明する若干の単純な変更が必要です。

GetParameterAsTextの使用

最初の手順は、sys.argv の代わりに GetParameterAsText を使用するようにスクリプトを変更することです。詳細については、「スクリプト ツールのパラメーターの理解」をご参照ください。 この修正はそのまま保持することができます。sys.argv を使用してコードを元の状態に戻す必要はありません。

ツールの実行およびデバッグ

  1. [ジオプロセシング] > [ジオプロセシング オプション] の順に選択して、[デバッガ] (例: PythonWin) を設定します。
    ヒント:

    インストール済みの PythonWin をデバッガとして使用する場合、[デバッガ] 設定の所定のパスはインストール場所に応じて決まりますが、通常は C:\Python27\ArcGIS10.2\Lib\site-packages\pythonwin\Pythonwin.exe に設定されます。

  2. [カタログ] ウィンドウで、ツールを右クリックし、[デバッグ] をクリックします。
  3. ツールボックスからスクリプト ツールを開き、設定したい任意のパラメーターを入力し、[OK] をクリックします。IDE が開くまでに少し時間がかかることがあります。スクリプト コードが表示され、通常の場合と同様に、デバッグ アプリケーションで自由に対話的な操作ができます。
    メモ:

    [デバッガ] 設定では、スクリプト ツールが常にフォアグラウンドで実行されます。

ブレーク ポイントを設定し、スクリプトでブレーク ポイントまで実行し、デバッガで使用可能な他のオプションを使用することができます。ダイアログ ボックスに入力したパラメーター値は、GetParameterAsText によって選択されます。

スクリプトの実行中には、スクリプトとアプリケーションの間に通常予期される相互作用が、引き続き発生します。したがって、AddMessage、AddWarning、または AddError 関数を使用している場合、これらのメッセージはアプリケーションに表示されます。プログレッサー関数を使用している場合、スクリプトを実行する過程で、ツールのダイアログ ボックスでプログレッサーが更新されます。スクリプトの実行が終了したら、デバッガを閉じてアプリケーションに戻ることができます。また、スクリプト ツールのデバッグを再実行する予定がある場合は、デバッガを開いたままにして、ツールの進捗状況ダイアログ ボックスで [キャンセル] をクリックすることもできます。

関連トピック

  • 埋め込みスクリプトとパスワード保護ツール

ArcGIS Desktop

  • ホーム
  • ドキュメント
  • サポート

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • Esri ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
ご意見・ご感想をお寄せください。
Copyright © 2021 Esri. | プライバシー | リーガル