Đây là một nhiệm vụ rất đơn giản để làm nhưng tôi không thể hiểu đúng cú pháp.
Tôi có một shapefile có thuộc tính tương tự như sau:
FID Shape FIELD1 FIELD2 FIELD3 ...
0 Polygon 0 1 0
1 Polygon 3 0 7
2 Polygon 3 4 7
...
Số lượng các lĩnh vực và tên của họ luôn luôn khác nhau.
Tôi cần tạo một trường mới (đặt tên là NUM) và đếm số không trong mỗi hàng.
Ví dụ đầu ra:
FID Shape FIELD1 FIELD2 FIELD3 NUM
0 Polygon 0 1 0 2
1 Polygon 3 0 7 1
2 Polygon 3 4 7 0
Tôi biết cách tạo một lĩnh vực mới, tuy nhiên tôi không rõ ràng về các bước tiếp theo.
Mã làm việc:
#path is path to shape file
def a(path):
fields = arcpy.ListFields(path,"FID_*") #FID_* is wildcard to select a fields name
arcpy.AddField_management(path, "NUM", "SHORT") #create a field with name NUM
cursor= arcpy.UpdateCursor(path)
for row in cursor:
count=0
for field in fields:
a= row.getValue(field.name) #take a value
if a==0: #if value=0 then value=value+1
count+=1
row.setValue("NUM", count)
cursor.updateRow(row)
del row
del cursor
Cảm ơn blah238 , bây giờ tôi có thể ăn trăn!