方法

ArcPy を使用して座標を含む CSV ファイルからポリゴンを作成する

Last Published: March 23, 2023

サマリー

ArcGIS Pro では、CSV ファイルの X、Y ポイントの座標データを参照し、ジオプロセシング ツールを使用してポリゴンを作成できます。 このプロセスは、ArcPy モジュールを使用して自動化することもできます。 この記事で説明するワークフローに従って、スタンドアロンの Python ファイル (.py) を使用して CSV ファイルからポリゴンを作成します。 Python スクリプトは、Jupyter NotebookPython ウィンドウでも実行されます。

手順

Note:
All field values in the CSV file must be numeric data type. If there are text field values, the Python script fails.
  1. .py 拡張子を持つファイルを作成します。
  2. スクリプトを実行する前に、ファイル内で以下のスクリプトを指定してください。
    1. 必要なモジュールをインポートします。
import csv
import os
import arcpy
  1. CSV ファイルのフォルダー パス、CSV ファイル名、新しいシェープファイル名、空間参照を変数として定義します。
in_dir = r"<CSVFileFolderPath>"
csvFile = "<fileName>.csv"
fc = "<newShapefileName>"
in_csv = os.path.join(in_dir, csvFile)
sr = arcpy.SpatialReference(<projectedCoordinateSystemWKID>)
  1. CreateFeatureclass() 関数を適用して、手順 2(b) で指定したフォルダーにポリゴン シェープファイルを作成します。
arcpy.management.CreateFeatureclass(
    in_dir, fc, geometry_type="POLYGON", spatial_reference=sr
)
out_feature_class = os.path.join(in_dir, fc)
  1. AddField() 関数を適用して、シェープファイルにフィールド名を追加します。
arcpy.management.AddField(out_feature_class, "<fieldName>", "LONG")
  1. InsertCursor() 関数を適用して、属性テーブルに新しい行を挿入します。 append() 関数を適用して、フィーチャのポイントの配列にポイントを追加します。 arcpy.Polygon() 関数を適用してポリゴンを作成します。 次のクエリ ステートメントは、CSV ファイル内のデータを反復処理します。 「row[0]」は CSV ファイル内のポイント グループ ID 番号の位置、「row[1]」は X 座標データの位置、「row[2]」は Y 座標データの位置を示します。
with arcpy.da.InsertCursor(out_feature_class, ["SHAPE@", "<fieldName>"]) as cursor:
    point_list = []
    parcel_value = None
    is_first_pass = True

    with open(in_csv, mode="r") as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=",")
        header = next(csv_reader)
        for row in csv_reader:

            if is_first_pass:
                parcel_value = row[0]
                is_first_pass = False
            elif row[0] != parcel_value:
                polygon = arcpy.Polygon(arcpy.Array(point_list), sr)
                cursor.insertRow([polygon, parcel_value])
                parcel_value = row[0]
                point_list = []

            point_list.append(arcpy.Point(row[1], row[2]))

        polygon = arcpy.Polygon(arcpy.Array(point_list), sr)
        cursor.insertRow([polygon, parcel_value])
  1. print() 関数を適用し、ポリゴンが作成されたときにメッセージを表示します。
print("COMPLETED")

以下のコード ブロックに、完全に機能するスクリプトを示します。

import csv
import os
import arcpy

in_dir = r"C:\Users\ISC-DT25\Documents\Artwork\Art 29483"
csvFile = "par_point-TEST.csv"
fc = "polygonFromCSV"
in_csv = os.path.join(in_dir, csvFile)
sr = arcpy.SpatialReference(32049)

arcpy.management.CreateFeatureclass(
    in_dir, fc, geometry_type="POLYGON", spatial_reference=sr
)
out_feature_class = os.path.join(in_dir, fc)
arcpy.management.AddField(out_feature_class, "POINTID", "LONG")

with arcpy.da.InsertCursor(out_feature_class, ["SHAPE@", "POINTID"]) as cursor:
    point_list = []
    parcel_value = None
    is_first_pass = True

    with open(in_csv, mode="r") as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=",")
        header = next(csv_reader)
        for row in csv_reader:

            if is_first_pass:
                parcel_value = row[0]
                is_first_pass = False
            elif row[0] != parcel_value:
                polygon = arcpy.Polygon(arcpy.Array(point_list), sr)
                cursor.insertRow([polygon, parcel_value])
                parcel_value = row[0]
                point_list = []

            point_list.append(arcpy.Point(row[1], row[2]))

        polygon = arcpy.Polygon(arcpy.Array(point_list), sr)
        cursor.insertRow([polygon, parcel_value])

print("COMPLETED")
  1. カタログ ウィンドウのフォルダー接続を使用し、新しく作成したシェープファイルを ArcGIS Pro で開きます。 詳細については、「ArcGIS Pro: マップへのシェープファイルの追加」をご参照ください。

記事 ID: 000029483

新しい問題や一般的な問題に対する通知とソリューションの受け取り

新しい AI チャットボットから、要約された回答とビデオソリューションを入手してください。

Esri Support アプリのダウンロード

関連情報

このトピックについてさらに調べる

ArcGIS エキスパートのサポートを受ける

テクニカル サポートへのお問い合わせ

Esri Support アプリのダウンロード

ダウンロード オプションに移動