ArcPyはアドインインターフェイスでフォームに入力できますか?


8

私はユーザーにいくつかの情報(ID、名前、住所、郵便番号など)を最初に入力するように要求するArcPyツールを構築しようとしています。私のアドインインターフェイスを以下に示します。ユーザーがIDを入力すると、他のすべての関連情報(名前、住所など)が別の既知のテーブルに存在する場合、それらは次の空白に表示されます。同時に、ユーザーにすべてを入力させる代わりに。

つまり、ArcPyは、結果ウィンドウではなく、アドインインターフェイスでフォームに入力できますか?

ここに画像の説明を入力してください

検証は機能しますが、160,000レコードを超える.dbfで検索カーソルを実行すると、非常に遅くなります。以下のコードをどのように改善できますか、またはPythonスクリプトツールを使用する以外のより良い解決策はありますか?他の無関係な空白を入力した後でも、フォームが再びカーソルを通過するようです。

import arcpy, datetime
import os
import sys
class ToolValidator(object):
  """Class for validating a tool's parameter values and controlling
  the behavior of the tool's dialog."""

  def __init__(self):
    """Setup arcpy and the list of tool parameters."""
    self.params = arcpy.GetParameterInfo()
    fc = "C:\\test\\vectorDBO.dbf"
    field = "PARCEL"
    cursor = arcpy.SearchCursor(fc)
    row = cursor.next()
    n = 0
    while row:
        if row.getValue("PARCEL") == self.params[0].value:
            self.params[1].value = row.getValue("LASTNM")
            self.params[3].value = row.getValue("ADDRESS")
            self.params[4].value = row.getValue("CITY")
            self.params[6].value = row.getValue("ZIPCODE")
            break
        row = cursor.next()

  def initializeParameters(self):
    """Refine the properties of a tool's parameters.  This method is
    called when the tool is opened."""
    self.params[10].value = datetime.datetime.now()
    return

  def updateParameters(self):
    """Modify the values and properties of parameters before internal
    validation is performed.  This method is called whenever a parameter
    has been changed."""
    return

  def updateMessages(self):
    """Modify the messages created by internal validation for each tool
    parameter.  This method is called after internal validation."""
    return

4
あなたが見てきましたカスタムツールの検証?他のフィールドに基づいてフィールドを設定するために使用できます。
バルバロッサ

1
古いスタイルのカーソルを使用しており、daモジュールで新しく高速な検索カーソルを使用したい場合、これにより速度の問題が解決されます。
Hornbydd 14年

あなたの提案をありがとう!テーブルを.csvファイルとして変換し、SearchCursor(arcpy.da)を使用すると、完全に機能します。
エネルギッシュなタラ魚14年

以前の投稿ですが、アドインを構築しているときに同様の問題が発生しました。searchcursorの.daフレーバーを使用し、csvやxlsxなどのよりシステムフレンドリーなデータ形式を使用することもできます。
COCO 2016年

回答:


4

私はPythonアドインを使用したことがありませんが、あなたが説明するインターフェイスはスクリプトツールです。アドインからスクリプトツールを呼び出す方法については、こちらをご覧ください。上記の@Barbarossaコメントとして、ツールの検証を使用してパラメーターを設定できます。Pythonアドインを作成する特別な理由がない限り、私はおそらくPythonスクリプトツールの作成に固執するでしょう。


1
@EnergeticCodfishこれで問題が解決した場合は、緑色の[同意する]ボタンをクリックしてください。
PolyGeo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.