Mengambil koordinat titik awal dan akhir dengan ArcPy? [Tutup]

9

Bagaimana cara mengambil koordinat titik awal dan akhir dengan ArcPy untuk kelas fitur polyline?

Saya berharap untuk meneruskan pengidentifikasi segmen ke subrutin dan memilikinya meneruskan kembali mulai dan akhir koordinat. Metode Field Calculator tidak berfungsi untuk saya, karena saya membutuhkan nilai untuk perhitungan lain yang tidak dapat dilakukan di dalamnya. (Saya juga memilih untuk tidak mengubah data untuk menyimpan koordinat ini sebagai atribut.) Saya mencoba menghitung rentang alamat untuk skema pengalamatan "center out". Nilai alamat tergantung pada jarak ke "pusat kota".

Ivar Husa
sumber

Jawaban:

15

Proses untuk ini tampaknya telah berubah antara ArcGIS 10.0 dan 10.1. Saya akan memasukkan sampel untuk keduanya.

Berikut ini adalah dokumen bantuan untuk membaca geometri pada 10.1 menggunakan arcpy: Membaca Geometri 10.1
Dokumen ini membahas parameter untuk tipe geometri Polyline : Polyline (arcpy)

10.1

import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
#
for row in arcpy.da.SearchCursor(infc, ["OID@", "SHAPE@"]):
    # Print the current line ID

    print("Feature {0}:".format(row[0]))

    #Set start point
    startpt = row[1].firstPoint

    #Set Start coordinates
    startx = startpt.X
    starty = startpt.Y

    #Set end point
    endpt = row[1].lastPoint

    #Set End coordinates
    endx = endpt.X
    endy = endpt.Y

10.0

Berikut ini adalah dokumen bantuan untuk membaca geometri dalam 10.0 menggunakan arcpy: Membaca Geometri 10.0
Dokumen ini membahas parameter untuk objek Geometri : Geometri

import arcpy

infc = arcpy.GetParameterAsText(0)

# Identify the geometry field
#
desc = arcpy.Describe(infc)
shapefieldname = desc.ShapeFieldName

# Create search cursor
#
rows = arcpy.SearchCursor(infc)

# Enter for loop for each feature/row
#
for row in rows:
    # Create the geometry object
    #
    feat = row.getValue(shapefieldname)

    # Print the current line ID
    #
    print "Feature %i:" % row.getValue(desc.OIDFieldName)

    #Set start point
    startpt = feat.firstPoint

    #Set Start coordinates
    startx = startpt.X
    starty = startpt.Y

    #Set end point
    endpt = feat.lastPoint

    #Set End coordinates
    endx = endpt.X
    endy = endpt.Y

Perbedaan antara keduanya pada dasarnya terletak pada bagaimana Anda mengakses geometri fitur. Ada beberapa pintasan yang ditambahkan pada 10.1 untuk membuatnya lebih mudah untuk sampai ke objek geometri.

Dapatkan Tata Ruang
sumber
6

Saya telah melakukan ini sebelumnya dan lebih suka menggunakan kursor pencarian dan membaca geometri. Itu menciptakan loop dan memungkinkan Anda untuk melakukan calc pada setiap bentuk.

inFeatures = "Feature"
shapeName = arcpy.Describe (inFeatures).shapeFieldName
rows = arcpy.SearchCursor(inFeatures)
for row in rows:
    feat = row.getValue(shapeName)
    xy1 = feat.firstPoint
    xy2 = feat.lastPoint

Lingkaran itu memungkinkan Anda untuk menambahkan beberapa perhitungan dengannya dan membentuk bentuk demi bentuk.

Ada beberapa bantuan tambahan dalam Bantuan: Bekerja dengan geometri dengan Python

Cody Brown
sumber
1

Anda harus dapat menggunakan properti firstPoint dan lastPoint dari objek Polyline .

twospeeder
sumber