Saya mencoba untuk menyelesaikan pilih dengan atribut dalam Python tetapi berdasarkan permintaan apakah atribut hadir dalam daftar.
Kueri seperti itu paling sederhana seharusnya berupa sesuatu seperti ini:
qry = " \"OBJECTID\" in oid_list"
arcpy.SelectLayersByAttribute_management(inft, "NEW_SELECTION", qry)
tetapi pendekatan itu mengembalikan kesalahan ekspresi yang tidak valid.
Di masa lalu, saya harus menggunakan sytax yang lebih rumit untuk jenis kueri ini, seperti:
sqlQuery2 = "nid in (" + ','.join(["'"+x+"'" for x in delta_list]) +")"
tetapi adaptasi dari cuplikan ini juga tidak bekerja untuk saya, yaitu .:
"OBJECTID_1 in (" + ','.join(["'"+str(x)+"'" for x in oid_list]) +")"
Apa yang kulewatkan di sini?
Berikut adalah versi fungsi yang sedikit dimodifikasi dalam jawaban ini , untuk menerima daftar Python alih-alih string yang dipisah koma:
sumber
Saya pikir pendekatan yang paling mudah untuk ini adalah untuk mengulangi nilai-nilai dalam daftar Anda secara tunggal dan menambahkannya ke pilihan (Jadi, Anda dapat mengubah kueri Anda dengan setiap nilai dalam daftar). Sesuatu seperti ini:
Anda dapat menggunakan ADD_TO_SELECTION bahkan jika tidak ada fitur yang dipilih, itu akan membuat pilihan baru pada iterasi pertama.
Edit:
Jika Anda berpikir biaya untuk melakukan SelectLayerByAttribute secara individual akan terlalu tinggi, Anda dapat menggunakan pendekatan seperti ini di mana Anda membuat klausa pilihan yang cukup besar tergantung pada panjang daftar Anda:
sumber