Tambahkan nilai dalam bidang atribut menggunakan arcpy

8

Saya perlu menambahkan nilai ke bidang yang ada di tabel atribut. Nilai harus ditentukan oleh nilai di bidang lain dalam tabel atribut yang sama. Saya tidak dapat menentukan nilai di bidang lain di skrip. Adakah yang bisa membantu saya dengan itu?

poshan
sumber

Jawaban:

8

Saya belum pernah menggunakan kursor Arc 10.1, tetapi tampaknya lebih mudah di sana.

Di 10.0, ada beberapa cara untuk melakukannya, tapi inilah pendekatan dasar dan pemula:

# Create a cursor on a feature class
cur = arcpy.UpdateCursor(myFeatureClass)

# Loop through the rows in the attribute table
for row in cur:
    # The variable sqMiles will get the value from the column
    # named 'Area_Miles'
    sqMiles = row.getValue('Area_Miles')
    # Calculate how many acres
    acres = (sqMiles * 640)
    # Assign the acres to a column named 'Area_Acres'
    row.setValue('Area_Acres', acres)
    # Apply the change
    cur.updateRow(row)

    # The loop will then move on to the next row/feature

Versi yang lebih sederhana dan ringkas:

cur = arcpy.UpdateCursor(myFeatureClass)

for row in cur:
    row.setValue('Area_Acres', row.getValue('Area_Miles') * 640)
    cur.updateRow(row)

Lihat: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v0000003m000000

Tom
sumber
5
Tom, tolong tulis kembali SEMUA "File Bantuan" ESRI menggunakan metode yang Anda gunakan dalam jawaban ini. Maka lebih banyak orang akan mengerti, dan dunia akan menjadi tempat yang lebih bahagia.
Jason Miller
2
Tom, silakan ikuti saran @JasonMiller. Dan terima kasih SANGAT BANYAK untuk membongkar ini untuk kami. Saya menganggap diri saya buta huruf, tetapi sekarang tidak lagi.
FaCoffee
2

Nah, ada beberapa cara Anda bisa melakukan ini.

  1. Jika perhitungannya cukup sederhana, saya akan menggunakan alat Calculate Field . Jika Anda perlu menggunakan parameter code_block, saya akan menggunakan opsi # 2 karena tidak selalu mudah mendapatkan sintaks yang benar dalam skrip (atau dalam alat itu sendiri dalam hal ini).

  2. Jika Anda tertarik untuk menulis skrip lebih banyak di masa mendatang, saya sangat merekomendasikan menggunakan kursor . Anda bisa menulis nilai dari satu bidang ke dalam daftar Python dan melakukan perhitungan Anda pada setiap item dalam daftar dengan for for dan kemudian menulis daftar kembali ke bidang baru Anda.

Saya jarang menggunakan Calculate Field lagi karena skrip kursor lebih mudah untuk semua kecuali rumus paling sederhana.

Paul
sumber