ArcGIS for Desktop

  • ドキュメント
  • 価格
  • サポート

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

ArcGIS Online

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

ArcGIS for Desktop

完全なプロ仕様の GIS

ArcGIS for Server

エンタープライズ GIS

ArcGIS for Developers

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

ArcGIS Solutions

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

ArcGIS Marketplace

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

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

ヘルプ

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • その他...

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

  • 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
  • Web 上の https://sourceforge.net/projects/pywin32 で入手可能な PythonWin
  • http://code.google.com/p/pyscripter で使用可能な PyScripter
  • Wing IDE(http://wingware.com)などの商用システム

デバッガを使用する 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 for Desktop

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

ArcGIS プラットフォーム

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • スタッフ ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | プライバシー | リーガル