Bagaimana cara memeriksa apakah kelas fitur atau tabel berisi bidang dengan nama tertentu sebelum menambahkannya?

8

Saya mencoba menulis skrip yang mengetahui apakah shapefile memiliki bidang tertentu dan jika tidak menambahkan bidang. Saya mendapatkannya untuk menunjukkan kepada saya bidang, tetapi loop melewati setiap bidang, sehingga akan membuat bidang baru setiap kali bidang yang ditentukan tidak ada. Tetapi jika ada, saya hanya ingin mengatakan itu ada dan jika tidak membuat bidang baru. Kode saya sejauh ini hanya mengatakan:

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

(Mencetak seperti ini karena ada lima bidang)

Kode saya sejauh ini:

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

for field in fieldList:

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

else: 
    "then add new field"
pengguna23879
sumber
1
Apakah kode itu benar-benar cocok dengan keluaran itu. Saya tidak terbiasa dengan arcpy, tetapi tampaknya sangat meragukan.
BradHards

Jawaban:

10

Alih-alih mengulangi nama bidang saat ini, Anda dapat mengulangi nama bidang yang ingin Anda tambahkan. Katakanlah Anda memiliki daftar to_add,, berisi nama bidang yang Anda inginkan untuk kelas fitur Anda miliki. Anda kemudian dapat menggunakan inpernyataan untuk memeriksa apakah setiap item dari to_adddalam fieldList. Berikut ini harus bekerja:

#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")
Paul
sumber