FAQ
ArcPy (ArcMap): フィーチャのジオメトリ情報を取得する方法

ナレッジ番号:2887 | 登録日:2023/05/29 | 更新日:2024/11/21

概要

Python スクリプトを使用して、フィーチャクラス内の各フィーチャのジオメトリ情報を取得する方法をご紹介します。ここでは、フィーチャクラスの各フィーチャから重心座標や面積といった情報を取得しています。フィーチャの取得にはデータアクセス モジュールの SearchCursor を使用しています。da.SearchCursor で取得したレコードがフィーチャの場合、トークンを使用することでジオメトリ オブジェクトとしてアクセスできます。トークンには例えば以下のような指定ができます。

  • Shape@ : ジオメトリ オブジェクト
  • Shape@AREA : 面積

サンプル コード

# coding:cp932
# Purpose:     フィーチャクラスに含まれる各フィーチャのジオメトリ情報を取得します。

# ArcPy サイト パッケージをインポートします。
import arcpy

# ワークスペースを設定します。
arcpy.env.workspace = r"C:\FAQ\database.gdb"

# データアクセス モジュールの SearchCursor を取得します。
# Cursor を使用することで、フィーチャ毎のループ処理を行えます。
# SearchCursor の第二引数に、使用するフィールドをリストで指定します。
cur = arcpy.da.SearchCursor("japan_ver71", ["SIKUCHOSON", "OID@", "Shape@", "Shape@AREA"])

# フィーチャ毎にループ処理を行い、ジオメトリ情報を表示します。
for row in cur:
    print "市区町村".ljust(10) + " : " + row[0].encode("cp932")
    # オブジェクト ID を取得します。
    print "Object ID".ljust(10) + " : " + str(row[1])
    # 重心座標を取得します。
    print "座標".ljust(10) + " : " + "X:" + str(row[2].centroid.X) + ", Y:" + str(row[2].centroid.Y)
    # 面積を取得します。
    print "面積".ljust(10) + " : " + str(row[3]) + "\n"

# オブジェクトを削除して、参照を解放します。
del cur, row

免責事項

こちらのサンプルはあくまでもコーディングの見本であり、実行時に発生したエラーの対処方法につきましては、サポート対象外とさせていただきます。また、操作方法やソースコードに関するご質問は別途有償の開発者サポート契約にてご対応させていただきます。なお、コードを実行して生じたいかなる損害についても弊社では責任を負いかねます。

メタデータ

機能

種類

製品