PythonとArcGIS Desktopで複数列のMultiValueパラメータを実装しますか?


10

ArcGIS(9.3)Pythonスクリプトで作業しています。入力の1つは、機能のリストです。各機能について、対応するフィールドを選択する必要があります。パラメータをMultiValueに設定すると、処理されているすべての機能について、UIに素敵なテーブルが表示されます。MultiValueテーブルに別の列を追加して、各機能のフィールドを選択するにはどうすればよいですか?

クロスポスト:http : //forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multiple-Columns

ArcGISフォーラムからのEsriの回答:

残念ながら、これに対するソリューションは、スクリプトツールのValueTable入力を使用して10.1で最近実装されました。これを9.3.1で機能させるには、いくつかのカスタム検証を備えた2つの多値パラメーターが必要です。


興味のある多値選択リストの生成である場合-このEsriブログ投稿を最近見たことがあります。
Alex Tereshenkov 2013年

回答:


1

私はこれをかなり簡単な方法で行う方法を考え出しました。多数のFeatureLayerを追加し、各レイヤーのIDフィールドを選択する複数値パラメーターを作成したいと思いました。機能しましたが、フィールドをドロップダウンリストにする方法を実行できなかったため、ユーザーはフィールド名を手動で入力する必要があります。これがインターフェースです:

インターフェースの例

誰かがこの問題を解決できた場合、またはESRIの指導者が私たちに知識を与えてくれた場合、2番目の列(サイトID)をドロップダウンにして、特定のフィールドをリストする方法を見つけたいと思います。この例を確認したい場合は、TIN作成ツールをご覧ください。

とにかく、このインターフェイスを作成するには、スクリプトツールを作成し、フィーチャレイヤータイプのパラメーターを追加して、以下に示すように複数の値に設定します。

初期インターフェース設定

次に、上部の[検証]タブをクリックし、[編集]ボタンをクリックしました。このパラメーターはスクリプトツールの6番目のパラメーターなので、次のコードを更新しました。

def initializeParameters(self):
    """Refine the properties of a tool's parameters.  This method is
    called when the tool is opened."""

    # Get the 6th parameter
    param = self.params[6]
    param.datatype = "Value Table"
    param.columns = [["Feature Layer","Activity Layer"],["Field","Site ID"]]    
    return

これにより、インターフェイスが希望する複数列のテーブルにリセットされます。GetParameterAsTextを使用すると、私の例を使用して以下が返されます。

pipeline pid;Dredging did


さらに調査を行い、Pythonツールボックスを使用してツールを作成しました。これは非常にうまく機能しますが、戻って別のIDを選択すると制限があります。こちらのコードをGeoNetに投稿しまし


0

サイトIDパラメータのドロップダウンリストを探している場合は、次のようなコードを使用できます。

 param.filters[1].list = ['pid', 'id']

したがって、カーソルを作成するか、別の方法を使用してFCのすべてのフィールドを読み取り、それらをリストとして前の文に渡すことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.