1、按属性SQL选择
最容易想到的是使用按属性选择构造WHERE子句(”OBJECTID=3 OR OBJECTID=6″)即可通过SQL选择出来。
2、属性连接
那么问题来了,如果给定的ID有100个,而且它们没有什么规律,构造SQL语句会不会手软呢?这也不难办,使用属性连接也可以选择出来。
3、自定义选择工具
有没有简便一点的、可重复使用的方式,不用连接、不用手动构造SQL子句,那就用代码自动来构造查询语句吧。
很简单很实用的工具,代码如下:
# -- coding:cp936 --
# ---------------------------------------------------------------------------
# Fun : SelectFeatures
# Author: gisweis
# Date : 2020.10.25
# Email :
# Notes :
# ---------------------------------------------------------------------------
import os
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
import arcpy
import string
try:
#参数1:输入的图层或表
table=arcpy.GetParameterAsText(0)
#参数2:输入的字段名称
field=arcpy.GetParameterAsText(1)
#参数2:输入的编号文本
txt=arcpy.GetParameterAsText(2)
oid_fieldname = arcpy.Describe(table).OIDFieldName
L=[]
with open(txt, "r") as f:
for line in f.readlines():
line = line.strip('\n')
if len(line) >0:
L.append(' '+field+'=' + line + ' OR')
L.append(' '+ oid_fieldname +'<0')
where=''.join(L)
arcpy.AddMessage(where)
arcpy.SelectLayerByAttribute_management(table,"NEW_SELECTION",where)
except arcpy.ExecuteError:
arcpy.GetMessages()
评论前必须登录!
注册