
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 osimport sysreload(sys)sys.setdefaultencoding( "utf-8" )import arcpyimport stringtry:#参数1:输入的图层或表table=arcpy.GetParameterAsText(0)#参数2:输入的字段名称field=arcpy.GetParameterAsText(1)#参数2:输入的编号文本txt=arcpy.GetParameterAsText(2)oid_fieldname = arcpy.Describe(table).OIDFieldNameL=[]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()
作者:我也是个傻瓜
作者博客地址:http://www.cnblogs.com/liweis/
转载于:地信论坛
本文仅限行业学习交流之用,版权、著作权归原载平台及作者所有。我们尊重作者的成果,如涉嫌侵权,请联系我们及时删除。
- END -


