はじめに
本記事は ArcGIS Pro で ArcPy を使った処理の基本を紹介する「【ArcGIS Pro 版】Python を使って作業の効率化を図ろう!」のシリーズ記事です。本シリーズ記事は過去に Esri Community ブログで紹介しました「Python を使って作業の効率化を図ろう!」シリーズ記事を ArcGIS Pro 版で再編集したものです。
前回の記事では 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 を使ったデータの操作についてご紹介しました。次回は、独自のツール作成方法ついてご紹介します。
関連リンク
ArcGIS 開発者コミュニティ Python を使って作業の効率化を図ろう!④ : データの操作( ArcMap 版)
【ArcGIS Pro 版】Python を使って作業の効率化を図ろう!シリーズ リンク集
第一回:ArcPy の基礎
第二回:マップ・レイヤーの操作
第三回:ジオプロセシング ツールの操作
第五回:独自ツールの作成