さて、本日はArcPyについて書いてみようと思います。
以前、以下のエントリーで空間的に重複したフィーチャの抽出方法を紹介しました。
今回は空間的ではなく、重複した属性、つまり、同カラムに同じ属性値を持つレコードの抽出方法を紹介します。
ArcPyとは
言わずもがなですが、ArcGISのデータを扱うためのPythonライブラリです。ArcPyに関しては当ブログで色々紹介していますので、興味のある方は以下エントリーを読んでみてください。
環境
Windows10 64bit
ArcGIS10.4.1 for Desktop
Python2.7.3
サンプルデータ
以下のようなデータを用意しました。testというカラムに重複した属性値をいくつか設定しています。
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]
結果を見ると、重複している属性値を抽出できたことが確認できました。ものすごい簡単ですね。
こんなのどういう時に使うの?と思われる方もいらっしゃるかもしれませんが、実際私は結構使います。例えば、キー項目として使っているカラムのデータに重複が発生してしまっている場合、こういうことをして対象データを抽出しています(そもそもキーカラムに重複を発生させるなよ、という話ですが)。ArcPyに興味がある方で「こんなことできないか?」という疑問がある方はぜひコメントを残してください。私にできることであればお答えできればと思います。本日は以上です。