方法
属性テーブルには通常、共通の値と一意の値があるフィールドが含まれています。 そのため、重複する値を特定してレイヤー グループを作成するか、一意の値を特定してフィーチャを隔離する必要がある場合があります。
重複する値を特定するには以下の 4 つの方法があります。
同一値を持つレコードの検出 (Find Identical) ツール を使用する
[同一値を持つレコードの検出 (Find Identical)] ツール は新しいスタンドアロン テーブルを作成します。 このツールは、フィーチャの ObjectID を特定して 2 つの列を作成します。その 1 つには選択したフィーチャの ObjectID の値が含まれており、もう 1 つの列には同一または一意のフィーチャをマークする数字が含まれています。 同一のレコードには同じ FEAT_SEQ 値があるのに対して、同一でないレコードには連番の値があります。 FEAT_SEQ 値は入力レコードの ID とは関連がありません。 詳細については、「ArcGIS Pro: 同一値を持つレコードの検出 (データ管理)」をご参照ください。
フィールド演算関数を使用する
isDuplicate() Python パーサー関数は新しいフィールドにデータを入力して、特定の値を割り当てることで重複する、または一意の値を特定できます。 たとえば、一意の値と複数の値のなかの最初の値には 0 が入力され、重複するすべての値は 1 の値でマークされます。 以下の手順では、この目的のために関数を適用する方法を説明します。
isDuplicate(!Field_Name_To_Verify!)
uniqueList = [] def isDuplicate(inValue): if inValue in uniqueList: return 1 else: uniqueList.append(inValue) return 0
スタンドアロン Python スクリプトを使用する
このスクリプトは新しいフィールドを作成して、重複する値の数をフィールドに入力します。
import arcpy
arcpy.env.workspace=r"D:\test.gdb" infeature="sample_feature" field_in="sample_field" field_out="COUNT_"+field_in arcpy.AddField_management(infeature,field_out,"SHORT")
lista=[] cursor1=arcpy.SearchCursor(infeature) for row in cursor1: i=row.getValue(field_in) lista.append(i) del cursor1, row
cursor2=arcpy.UpdateCursor(infeature) for row in cursor2: i=row.getValue(field_in) occ=lista.count(i) row.setValue(field_out,occ) cursor2.updateRow(row) del cursor2, row print ("Done.")
以下に、完全なコードを示します。
import arcpy arcpy.env.workspace=r"D:\test.gdb" infeature="sample_feature" field_in="sample_field" field_out="COUNT_"+field_in arcpy.AddField_management(infeature,field_out,"SHORT") lista=[] cursor1=arcpy.SearchCursor(infeature) for row in cursor1: i=row.getValue(field_in) lista.append(i) del cursor1, row cursor2=arcpy.UpdateCursor(infeature) for row in cursor2: i=row.getValue(field_in) occ=lista.count(i) row.setValue(field_out,occ) cursor2.updateRow(row) del cursor2, row print ("Done.")
[要約統計量 (Summary Statistics)] ツールを使用してテーブルを結合する
ArcGIS エキスパートのサポートを受ける
Esri Support アプリのダウンロード