はじめに
この記事は ArcPy を使った処理の基本を紹介する「Python を使って作業の効率化を図ろう!」のシリーズ記事です。本シリーズ記事で使用するデータや関連資料は ESRI ジャパンの GitHub で公開していますので是非ご覧ください。また、本シリーズ記事では ArcGIS Desktop (ArcMap) を利用した操作をご紹介します。
前回の記事では ArcPy を使ったジオプロセシング ツールの操作についてご紹介しました。
第 4 回目となる今回は ArcPy を使ったデータの操作についてご紹介します。
データの操作
ArcPy を使用すると、ジオプロセシングオブジェクトやデータ要素 のプロパティ取得や、フィーチャクラスやテーブルに含まれるレコードにアクセスしデータの取得や挿入、更新などができます。ここではデータ プロパティの取得方法と、データの操作方法についてご紹介します。
データ プロパティの取得
プロパティを取得するためには ArcPy の Describe 関数を使用します。使い方は、arcpy.Describe(value,{dataType}) の value にジオプロセシングオブジェクトやデータ要素を与えることで実行できます。Describe 関数はフィーチャクラスやラスター レイヤーなど、ジオプロセシングオブジェクトやデータ要素が持つプロパティの情報を取得することができます。
カーソル
第 1 回目の記事で簡単にご紹介しましたが、データを操作するためには ArcPy が保有するデータ アクセス モジュールを使用します。データ アクセス モジュールに含まれているカーソルを使うとデータの操作を行うことができます。カーソルはテーブルに含まれるレコードの位置を示します。カーソルには SearchCursor や、InsertCursor、UpdateCursor があり、それぞれレコードの検索(Search)、挿入(Insert)、更新(Update)を行うことが可能です。
SearchCursor はフィーチャクラスやテーブルから行を検索し、値を読み取りたいときに使用します。取得した行の特定の値を取得したり、ジオメトリの座標を取得することなどが可能です。
次の例では、SearchCursor を使用して、下表のようなデータから name フィールドと users フィールドの値を取得しています。
# SearchCursor クラスを使用して SearchCursor オブジェクトを取得 cur = arcpy.da.SearchCursor(“Station”, [“name”, “users”]) # Cursor から、name (インデックス番号:0) フィールドと users (インデックス番号:1) フィールドの値を表示 for row in cur: print row[0] print row[1] # オブジェクトを削除して、参照を解放 del cur >> 永田町駅 >> 10 >> 六本木駅 >> 33 >> 赤坂見附駅 >> 25
InsertCursor はフィーチャクラスやテーブルに新たな行を追加したいときに使用します。
次の例では、InsertCursor を使用して、新たに表参道駅のフィーチャを行として追加しています。
# 追加する値をタプル型で変数に格納 rowValues = (“表参道駅”, (141.324167, 24.786667)) # InsertCursor オブジェクトを取得 cur = arcpy.da.InsertCursor(“Station”, [“name”, “SHAPE@XY”]) # カーソルに新しいレコード値をセットして行を追加 cur.insertRow(rowValues) # オブジェクトを削除して、参照を解放 del cur
※SHAPE@XY はフィーチャの重心を表す X 座標と Y 座標にアクセスすることができます。
UpdateCursor はフィーチャクラスやテーブルの行の情報を更新する際に使用します。
次の例では、UpdateCursor を使用して、下表のような永田町駅の属性を持つフィーチャの行に対して users フィールドの値を 10 から 20 に更新しています。
# 更新対象の永田町駅 を UpdateCursor オブジェクトで取得 cur = arcpy.da.UpdateCursor(“Station”, “users”, “name = ‘永田町駅’”) # users (インデックス番号:0) フィールドの値を更新 for row in cur: row[0] = 20 cur.updateRow(row) # オブジェクトを削除して、参照を解放 del cur
このように ArcPy のデータ アクセス モジュールに含まれているを使用すると、データの取得や挿入、更新などをすることができますので、是非試してみてください。
本記事では ArcPy を使ったデータの操作についてご紹介しました。次回は、独自のツール作成方法ついてご紹介します。
関連リンク