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

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

Filter

  • 概要
  • ディスカッション
  • プロパティ
  • コードのサンプル

概要

The filter object allows you to specify the choices available for a parameter.

ディスカッション

filter オブジェクトを使用すると、ユーザーが利用できるパラメーターを指定できます。たとえば、選択肢をテキスト フィールドだけに制限するフィールド フィルターを設定できます。フィルターには、3 つの働きがあります。

  • フィルターは、ユーザーに対してデータの参照時に有効な選択肢だけを提供します。ポイント フィーチャクラスにフィルターを設定する場合、ユーザーがデータを参照するときに、ポイント フィーチャクラスだけが表示されます。テキスト フィールドにフィルターを設定する場合、フィールドのドロップダウン リストにはテキスト フィールドだけが表示されます。
  • ユーザーが (リストやファイル ブラウザーから値を選択するのではなく) パラメーター値を入力する場合、その値がフィルターに対してチェックされます。ユーザーが不正な値 (テキスト フィールドではなく数値フィールドなど) を入力した場合、警告またはエラーが自動的に設定されます。
  • 値はフィルターに対して内部整合チェックでチェックされるため、フィルターを使用することで、ToolValidator クラス内に独自の整合チェックをプログラムする必要がなくなります。

フィルターを指定するには、次の 2 つの方法があります。

  • ツールのプロパティ ダイアログ ボックスの [パラメーター] タブで、パラメーターをクリックしてから、[フィルター] の横にあるセルをクリックして、ドロップダウン リストからフィルター タイプを選択します。フィルター タイプを選択すると、ダイアログ ボックスが開くので、フィルターの値を指定します。
  • ToolValidator クラス内のプログラムで値を設定できます (以下に例を示します)。ジオプロセシングは、文字列、long、double、フィーチャクラス、ファイル、フィールド、ワークスペースのタイプのパラメーターに対して、フィルターを自動的に作成します。ツールのプロパティ ダイアログ ボックスでフィルターを選択していない場合でも、パラメーターには空のフィルターが関連付けられています。空のフィルターは、フィルターがない場合と同じです。空のフィルターに値を追加することで、フィルターを有効化して、ユーザーの選択肢をフィルターの内容に制限することができます。

プロパティ

プロパティ説明データ タイプ
list
(読み書き)

If you do not want to filter values, set the list property to an empty list.

The datatype specified depends on the filter type (ValueList, Range, FeatureClass, File, Field, and Workspace).

String
type
(読み書き)

The type of filter (ValueList, Range, FeatureClass, File, Field, and Workspace). You can set the type of filter when dealing with Long and Double parameters. For other types of parameters, there is only one valid type of filter, so setting the type on these parameters is ignored. If you do not want to filter values, set the List property to an empty list.

String

コードのサンプル

Filter example

An example of dynamically updating a value list filter containing a choice list of keywords. If the user enters "OLD_FORMAT" in the second parameter, the third parameter contains "POINT", "LINE", and "POLYGON". If "NEW_FORMAT" is entered, the third parameter contains three additional choices.

import arcpy

class ToolValidator:
    def __init__(self):
        self.params = arcpy.GetParameterInfo()

    def initializeParameters(self):
        return

    def updateParameters(self):
        # Provide default values for "file format type" and
        #  "feature type in file"
        if not self.params[1].altered:
            self.params[1].value = "OLD_FORMAT"
        if not self.params[2].altered:
            self.params[2].value = "POINT"

        # Update the value list filter of the "feature type in file"
        # parameter depending on the type of file (old vs. new format)
        # input
        if self.params[1].value == "OLD_FORMAT":
            self.params[2].filter.list = ["POINT", "LINE", "POLYGON"]
        elif self.params[1].value == "NEW_FORMAT":
            self.params[2].filter.list = ["POINT", "LINE", "POLYGON",
                                          "POINT_WITH_ANNO",
                                          "LINE_WITH_ANNO",
                                          "POLYGON_WITH_ANNO"]

        return

    def updateMessages(self):
        return
Filter example 2

An example where the value list filter in the second parameter changes based on the shape type found in the first parameter, a feature class.

def updateParameters(self):
    # Update the value list filter in the second parameter based
    # on the shape type in the first parameter
    string_filter = self.params[1].filter
    feature_class = self.params[0].value
    if feature_class:
        shape_type = arcpy.Describe(feature_class).shapeType
        if shape_type in ["Point", "Multipoint"]:
            string_filter.list = ["RED", "GREEN", "BLUE"]
        elif shape_type == "Polygon":
            string_filter.list = ["WHITE", "GRAY", "BLACK"]
        else:
            string_filter.list = ["ORANGE", "INDIGO", "VIOLET"]
    else:
        string_filter.list = ["RED", "GREEN", "BLUE"]

    # If the user hasn't changed the keyword value, set it to the
    # default value (first value in the value list filter).
    if not self.params[1].altered:
        self.params[1].value = string_filter.list[0]

    return

関連トピック

  • スクリプト ツール パラメーターの設定
  • Value
  • Parameter
  • Schema
  • スクリプト ツールの動作のカスタマイズ

ArcGIS Desktop

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

ArcGIS

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

Esri について

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