GIS奮闘記

元GISエンジニアの技術紹介ブログ。主にPythonを使用。

スポンサーリンク

ArcPyレシピ集⑥ ~重複した属性値を抽出~

さて、本日はArcPyについて書いてみようと思います。

以前、以下のエントリーで空間的に重複したフィーチャの抽出方法を紹介しました。

www.gis-py.com

今回は空間的ではなく、重複した属性、つまり、同カラムに同じ属性値を持つレコードの抽出方法を紹介します。

ArcPyとは

言わずもがなですが、ArcGISのデータを扱うためのPythonライブラリです。ArcPyに関しては当ブログで色々紹介していますので、興味のある方は以下エントリーを読んでみてください。

www.gis-py.com

www.gis-py.com

環境

Windows10 64bit
ArcGIS10.4.1 for Desktop
Python2.7.3

サンプルデータ

以下のようなデータを用意しました。testというカラムに重複した属性値をいくつか設定しています。
f:id:sanvarie:20190312105939p:plain

f:id:sanvarie:20190312110003p:plain

f:id:sanvarie:20190312112111p:plain

1,2,7,9が重複してますね!

サンプルコード

上記データの中にある重複した属性値を抽出するサンプルコードです。

# -*- coding: utf-8 -*-
import arcpy
from collections import Counter

arcpy.env.workspace = ur"C:\ArcPySample\Duplicate.gdb"

feature_class = "test"
column = "test"
c = []

for f in arcpy.da.SearchCursor(feature_class, column):
    c.append(f[0])

print [key for key,val in Counter(c).items() if val > 1]


結果を見ると、重複している属性値を抽出できたことが確認できました。ものすごい簡単ですね。
f:id:sanvarie:20190312112803p:plain

こんなのどういう時に使うの?と思われる方もいらっしゃるかもしれませんが、実際私は結構使います。例えば、キー項目として使っているカラムのデータに重複が発生してしまっている場合、こういうことをして対象データを抽出しています(そもそもキーカラムに重複を発生させるなよ、という話ですが)。ArcPyに興味がある方で「こんなことできないか?」という疑問がある方はぜひコメントを残してください。私にできることであればお答えできればと思います。本日は以上です。