Я пытаюсь выполнить выбор по атрибуту в Python, но на основе запроса о том, присутствует ли атрибут в списке.
Такой запрос в самом простом виде должен выглядеть примерно так:
qry = " \"OBJECTID\" in oid_list"
arcpy.SelectLayersByAttribute_management(inft, "NEW_SELECTION", qry)
но этот подход возвращает недопустимую ошибку выражения.
В прошлом мне приходилось использовать более сложный синтаксис для этого типа запроса, например:
sqlQuery2 = "nid in (" + ','.join(["'"+x+"'" for x in delta_list]) +")"
но адаптация этого фрагмента мне тоже не подходит, т.е.
"OBJECTID_1 in (" + ','.join(["'"+str(x)+"'" for x in oid_list]) +")"
Что мне здесь не хватает?
Вот немного измененная версия функции в этом ответе , чтобы принять список Python вместо строки, разделенной точкой с запятой:
источник
Я думаю, что самый простой подход к этому состоит в том, чтобы перебирать значения в вашем списке по отдельности и добавлять их в выборку (так что вы можете изменить свой запрос с каждым значением в списке). Что-то вроде этого:
Вы можете использовать ADD_TO_SELECTION, даже если нет выбранных объектов, это создаст новый выбор на первой итерации.
Редактировать:
Если вы считаете, что стоимость создания отдельного SelectLayerByAttribute будет слишком высокой, вы можете использовать такой подход, когда вы создаете довольно большое предложение выбора в зависимости от длины списка:
источник