概要
Python スクリプトを使用して、フィーチャクラスに含まれるフィーチャの重心座標値を取得し CSV ファイルに出力する方法をご紹介します。フィーチャクラスがポイントの場合には、ポイントの座標値を取得して出力します。フィーチャの取得にはデータアクセス モジュールの SearchCursor を使用しています。da.SearchCursor で取得したレコードがフィーチャの場合、トークンを使用することでジオメトリ オブジェクトとしてアクセスできます。トークンには例えば以下のような指定ができます。
- OID@ : オブジェクト ID
- Shape@ : ジオメトリ オブジェクト


サンプル コード
# coding:cp932
# Purpose:フィーチャクラスに含まれる各フィーチャの中心座標値を取得し出力します。
# ArcPy サイト パッケージをインポートします。
import arcpy
# フィーチャクラスを設定します。
inputFc = r"D:FAQdatabase.gdbjapan_ver72"
# 重心座標値を出力する CSV ファイルを設定します。
outputFile = r"D:FAQoutput.csv"
# CSV ファイルに出力するフィールドを確認します。
# List 関数を使用してフィーチャクラスのフィールドをリスト化します。
fieldsList = arcpy.ListFields(inputFc)
for field in fieldsList:
print field.name
# データアクセス モジュールの SearchCursor を取得します。
# Cursor を使用することで、フィーチャ毎のループ処理を行えます。
# SearchCursor の第二引数に、使用するフィールドをリストで指定します。
cur = arcpy.da.SearchCursor(inputFc, ["OID@", "SIKUCHOSON", "Shape@"])
# Python の Open 関数を使用して CSV ファイルにデータを書き込みます。
# 第二引数に "w" を設定し CSV ファイルを書き込みモードで開きます。
with open(outputFile, "w") as f:
outputstring= u"OID, 市区町村名, X 座標, Y 座標n"
f.write(outputstring.encode("SHIFT-JIS"))
# フィーチャ毎にループ処理を行い、オブジェクト ID、市区町村の名前、中心座標値を取得します。
for row in cur:
objectID = row[0]
strOID = str(objectID)
name = row[1]
strName = name.encode("cp932")
xCoord = row[2].trueCentroid.X
strXCoord = str(xCoord)
yCoord = row[2].trueCentroid.Y
strYCoord = str(yCoord)
# 取得した各フィーチャの値を、CSV ファイルに書き込みます。
f.write(strOID + "," + strName + "," + strXCoord + "," + strYCoord + "n")
# オブジェクトを削除して、参照を解放します。
del cur, row
免責事項
こちらのサンプルはあくまでもコーディングの見本であり、実行時に発生したエラーの対処方法につきましては、サポート対象外とさせていただきます。
また、操作方法やソースコードに関するご質問は別途有償の開発者サポート契約にてご対応させていただきます。なお、コードを実行して生じたいかなる損害についても弊社では責任を負いかねます。
このナレッジはお役に立ちましたか?
フィードバックをいただきありがとうございます!