Làm cách nào để kiểm tra xem lớp tính năng hoặc bảng có chứa trường với tên cụ thể trước khi thêm nó không?


8

Tôi đang cố gắng viết một tập lệnh để tìm hiểu xem shapefile có một trường cụ thể không và nếu không thêm trường đó. Tôi nhận được nó để hiển thị cho tôi trường, nhưng vòng lặp đi qua từng trường, vì vậy nó sẽ tạo ra một trường mới mỗi khi trường được chỉ định không có ở đó. Nhưng nếu có thì tôi chỉ muốn nó nói nó ở đó và nếu nó không tạo ra lĩnh vực mới. Mã của tôi cho đến nay chỉ nói:

"not filled in yet"
"not filled in yet"
"not filled in yet"
"cities.shp"
"not filled in yet"

(in ra như thế này vì có năm trường)

Mã của tôi cho đến nay:

fieldList = arcpy.ListFields("cities.shp")

for field in fieldList:

if field.name == "CAPITAL":
    print "cities.shp"

else: 
    "then add new field"

1
Liệu mã đó thực sự phù hợp với đầu ra đó. Tôi không quen thuộc với Arcpy, nhưng nó có vẻ rất đáng ngờ.
BradHards

Câu trả lời:


10

Thay vì lặp qua tên trường hiện tại, bạn có thể lặp qua tên trường bạn muốn thêm. Giả sử bạn có một danh sách to_add, chứa các tên trường bạn muốn lớp tính năng của bạn có. Sau đó, bạn có thể sử dụng incâu lệnh để kiểm tra xem mỗi mục từ to_addtrong fieldList. Sau đây nên làm việc:

#List of field names to be added
to_add = ["Area", "Date_add", "User_add", "etc."]

#Create a list of existing field names
fieldList = arcpy.ListFields("cities.shp")    
fieldName = [f.name for f in fieldList]

for field in to_add:
  if field in fieldName:
    print "Already exists!"
  else:
    arcpy.AddField_management("cities.shp", field, "TEXT")
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.