回答:
または、ArcToolBoxツールのFrequency(Analysis Tools >> Statistics >> Frequency)を実行して、一意の値とそれらが表示される回数のカウントを含むテーブルを出力できます。
または、フィールドでSearchCursorを取得するpythonスクリプトを作成し、フォームのすべての値のリストを作成することもできます
if value not in myList:
myList.append(value)
Pythonリスト内包表記を使用します。
import arcpy
fldName = 'val_fld'
fcName = 'feature_class.shp'
#set creates a unique value iterator from the value field
myList = set([row.getValue(fldName) for row in arcpy.SearchCursor(fcName)])
大規模なデータセットの場合、メモリ効率の良い方法は、ジェネレータ式を使用することです。
myList = set((row.getValue(fldName) for row in arcpy.SearchCursor(fcName,fields=fldName))
fields
引数を指定します。たとえばmyList = set([row.getValue(fldName) for row in arcpy.SearchCursor(fcName, fields=fldName)])
データがPGDB形式の場合、サブクエリを使用して、クエリビルダーダイアログ(定義クエリ、属性による選択、ツールボックス式など)内で以下を実行できます。
SELECT * FROM tableName WHERE ...
column_to_test_for_unique_values IN
(SELECT column_to_test_for_unique_values
FROM table_name
GROUP BY column_to_test_for_unique_values HAVING
Count(column_to_test_for_unique_values)=1)
これにより、column_to_test_for_unique_valuesの値が一意であるレコードが返されます。
Basic(以前はArcViewと呼ばれていた)ライセンスしかない場合は、テーブルビューを開き、列を右クリックして、[要約]を選択できます。
データがSDE(空間データベースエンジン)にある場合、pythonとarcpyのArcSDESQLExecuteオブジェクトを使用できます。この「メソッド」を使用して複雑なSQLを渡すことができます。
# set up executor for sql
executor = arcpy.ArcSDESQLExecute(sde_connection_sql)
# sql statements
select_max = """select max(LOAD_ID) from SDE.FEATURE_CLASS"""
# get load id
result_max_id = executor.execute(select_max)
または、Pythonスクリプトを使用してCSVにエクスポートし、別のデータベース(SpatiaLiteなど)のPython APIを使用してcsvを読み取り、同じスクリプト内から適切なSQLクエリを実行します。大きなテーブルの場合、これは独自のリストビルダー-dunnoを展開するよりも少し速いかもしれません。
どのように実行しても、これは依然としてArcGISの非常に迷惑な「機能」です。
distinct
サブクエリでを使用するのはどうですか(以下はFGDBフィーチャクラスです):
"STATE_NAME" = (select distinct "STATE_NAME" from EsriUsaCountiesDetailed)
ヘルプ(10.0)から、これには制限があることに注意してください。
カバレッジ、シェープファイル、およびその他の非ジオデータベースファイルベースのデータソースは、サブクエリをサポートしていません。