Python アドイン ツールの作成

アドイン ツールの作成

ツールはボタンによく似ています。ただしツールでは、まずデスクトップ アプリケーションの表示を使用したユーザによる操作が必要で、このユーザの操作に基づいてビジネス ロジックが実行されます。たとえば、ArcMap の [拡大] ツール 拡大 では、表示を再描画して指定したエリアのマップ コンテンツを拡大する前に、マップ上をクリックするか長方形をドラッグする必要があります。

このトピックでは、Python アドイン ウィザードを使用して新しいツールバーにツールを作成する方法を、手順に従って説明します。このワークフローを開始する前に、ArcMap のアドイン プロジェクトを作成して、プロジェクト設定を指定していることを確認してください。詳細については、「アドイン プロジェクトの作成」をご参照ください。このワークフローでは ArcMap のツールを作成する方法を説明しますが、他の ArcGIS for Desktop アプリケーションでも、同じ方法でツールを追加できます。このトピックでは、簡単な [フィッシュネットの作成] ツールを作成する方法を検証します。その後、アドイン ウィザードで作成された Python クラスを詳しく検証して、ツールに機能を提供するプロパティとメソッドを確認します。

アドイン ツールの作成する処理は、以下の手順で構成されます。

手順:
  1. ツールバーを作成します。

    [アドインのコンテンツ] タブをクリックし、アドインのカスタマイズを宣言します。ツールはツールバーに配置できますが、メニューには配置できません。独自のツールバーを作成する手順については、「アドイン ツールバーの作成」をご参照ください。

  2. ツールを作成します。

    新しいツールバーを右クリックして、[新規ツール] を選択します。

    アドイン ツールの作成

    ツールには多くのプロパティを設定できます。以下のリストに、すべてのプロパティとその説明を示します。これらのプロパティは、プロジェクトの config.xml ファイルに格納されます。

    プロパティ

    説明

    キャプション(必須)

    ツールのキャプションを定義します。次の図は、ArcGIS アドイン マネージャに表示されたキャプションを示しています。利用可能なカスタマイズのタイプを判断するのに役立ちます(アドインのタイプが括弧内に示されています)。

    アドイン マネージャでのフィッシュネット ツールのプロパティ

    次の図は、ツールバー上でツールを識別するためにテキストとして使用されているキャプションを示しています。

    ArcMap での [フィッシュネットの作成] アドイン ツール

    クラス(必須)

    ツールを表す Python クラス。Python クラスは、ツールのビジネス ロジックを書き込む場所です。このクラスは、デスクトップ アプリケーションでツールをクリックするごとに実行されるため重要です。クラスを構築するときは、Python の命名規則を使用します。Python クラスでは、単語の先頭を大文字にする表記法を使用します。この例では、CreateFishnet というクラスを作成します。

    ID(必須)

    ツールを識別する一意の名前。1 つのプロジェクトに複数のツールを作成することができるため、この ID を使用して各ツールを区別します。デフォルトの ID を、意味のある値に置き換えると理想的です。ID にスペースを含めることはできません。単語を区切る場合はアンダースコアを使用してください。Python のキーワードも使用しないでください。予約語については、Python のドキュメントをご参照ください。

    ツールチップ(オプション)

    デスクトップ アプリケーションでマウス ポインタをツールの上に置いたときに表示される簡単な説明。

    メッセージ(オプション)

    ツールの動作についてのより詳しい説明。[ツールチップ] プロパティと同様に、メッセージはマウス ポインタをツールの上に置いたときに、ツールチップと一緒に表示されます。

    画像(オプション)

    ツールのシンボル表示に使用する 16 x 16 ピクセルの画像です。指定できる画像形式は、*.png*.gif、または *.bmp のいずれかです。画像は、アドイン プロジェクトに作成された Images フォルダにコピーされます。

    ツールの最後のセクションは、ヘルプの見出しとコンテンツについてです。これらのプロパティでは、ユーザがポップアップ ヘルプを呼び出したときに表示される情報を設定できます。これらはポップアップ トピックとして表示され、ユーザが別の場所をクリックするまで画面上に表示されたままになります。

    ポップアップ ヘルプのセクションは以下のプロパティで構成されます。

    プロパティ

    説明

    見出し(オプション)

    ヘルプ コンテンツの要約を示します。

    コンテンツ(オプション)

    ツールのヘルプ コンテンツ。

    プロパティの入力が完了したら、ウィザードの下部にある [保存] をクリックします。必要なすべてのファイルとフォルダが、作業フォルダ内に作成されます。

  3. Python スクリプトを編集して、ポリゴンのフィッシュネットを作成する機能を含むように Python クラスを更新します。

    対象エリアは、マウスのドラッグで四角形を作成して定義します。フィッシュネットのサイズは 10 行 x 10 列に設定します。カスタム ツールに機能を追加するには、以下の手順を実行します。

    1. 作業フォルダ内の Install フォルダにある、ウィザードが作成した Python スクリプトを編集します。

      ウィザードで入力した名前と同じ名前のクラスが存在します。クラス名は config.xml で参照されているため、このクラス名は変更しないでください。クラスの各関数およびプロパティの詳細については、「Tool クラス」をご参照ください。

    2. 関数を以下に示すように更新します。

      このコードは、ポリゴンのフィッシュネットを 10 行 x 10 列で作成する機能を提供します。

      def __init__(self):
          self.enabled = True
          self.cursor = 3
          self.shape = 'Rectangle'
          
      def onRectangle(self, rectangle_geometry):
          """Occurs when the rectangle is drawn and the mouse button is released.
          The rectangle is a extent object."""
      
          extent = rectangle_geometry
          # Create a fishnet with 10 rows and 10 columns.
          if arcpy.Exists(r'in_memory\fishnet'):
              arcpy.Delete_management(r'in_memory\fishnet')
          fishnet = arcpy.CreateFishnet_management(r'in_memory\fishnet',
                                  '%f %f' %(extent.XMin, extent.YMin),
                                  '%f %f' %(extent.XMin, extent.YMax),
                                  0, 0, 10, 10,
                                  '%f %f' %(extent.XMax, extent.YMax),'NO_LABELS',
                                  '%f %f %f %f' %(extent.XMin, extent.YMin, extent.XMax, extent.YMax), 'POLYGON')
          arcpy.RefreshActiveView()
          return fishnet
      
    3. スクリプトを保存します。
  4. ツールをテストします。

    ツールを作成してスクリプト コードを追加したら、アドインを共有する前に、アドイン ファイルを作成してテストすることが重要です。これらの手順については、「アドインのテスト」をご参照ください。

  5. アドインを配備および共有します。

    アドインの配備と共有の手順については、「アドインの共有とインストール」をご参照ください。

関連トピック

5/10/2014