Thêm giá trị trong trường thuộc tính bằng arcpy


8

Tôi cần thêm các giá trị vào một trường hiện có trong bảng thuộc tính. Các giá trị được xác định bởi các giá trị trong trường khác trong cùng bảng thuộc tính. Tôi không thể xác định các giá trị trong trường khác trong tập lệnh. Bất cứ ai có thể giúp tôi với nó?

Câu trả lời:


8

Tôi đã không sử dụng con trỏ Arc 10.1, nhưng dường như thậm chí còn dễ dàng hơn ở đó.

Trong 10.0, có một vài cách để thực hiện, nhưng đây là cách tiếp cận cơ bản, dành cho người mới bắt đầu:

# 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

Một phiên bản đơn giản hơn, cô đọng:

cur = arcpy.UpdateCursor(myFeatureClass)

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

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


5
Tom, vui lòng viết lại TẤT CẢ "Tệp trợ giúp" của ESRI bằng phương pháp bạn đã sử dụng trong câu trả lời này. Sau đó, nhiều người sẽ hiểu, và thế giới sẽ là một nơi hạnh phúc hơn.
Jason Miller

2
Tom, xin vui lòng làm theo lời khuyên của @JasonMiller. Và cảm ơn bạn RẤT nhiều vì đã phá vỡ điều này cho chúng tôi. Tôi tự coi mình mù chữ, nhưng giờ không còn nữa.
FaCoffee

2

Vâng, có một vài cách bạn có thể làm điều này.

  1. Nếu phép tính khá đơn giản, tôi sẽ sử dụng công cụ Tính toán trường . Nếu bạn cần sử dụng tham số code_block, tôi sẽ sử dụng tùy chọn # 2 vì không phải lúc nào cũng dễ dàng thực hiện cú pháp chính xác trong tập lệnh (hoặc trong chính công cụ cho vấn đề đó).

  2. Nếu bạn quan tâm đến việc viết kịch bản nhiều hơn trong tương lai, tôi thực sự khuyên bạn nên sử dụng con trỏ . Bạn có thể viết các giá trị từ một trường vào danh sách Python và thực hiện các tính toán của bạn trên từng mục trong danh sách bằng một vòng lặp for và sau đó viết danh sách trở lại trường mới của bạn.

Tôi hiếm khi sử dụng Trường tính toán nữa vì nó dễ dàng hơn đối với các con trỏ script cho tất cả trừ các công thức đơn giản nhất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.