大数跨境
0
0

ArcGIS中使用Python批量选择指定属性的要素

ArcGIS中使用Python批量选择指定属性的要素 GIS前沿
2021-01-06
1
导读:在GIS数据处理中,选择数据是十分频繁的操作,常用的是"按属性选择"和"按位置选择",这两个功能虽然比较强大...

在GIS数据处理中,选择数据是十分频繁的操作,常用的是"按属性选择"和"按位置选择",这两个功能虽然比较强大,但有时也不能满足实际需求。比如可能时常会遇到这样一种情景:将指定OID(假设3和6)的要素选择出来。


 

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  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()

作者:我也是个傻瓜

作者博客地址:http://www.cnblogs.com/liweis/

转载于:地信论坛

本文仅限行业学习交流之用,版权、著作权归原载平台及作者所有。我们尊重作者的成果,如涉嫌侵权,请联系我们及时删除。


- END -


7.72GB ARCGIS  ERDAS  ENVI干货教程网盘下载
利用Python在ArcGIS中批量裁剪影像(带重叠度)「附源代码下载」
ArcGIS Python基础:如何使用ArcPy
ArcGIS入门基础教学
制图培训 | ArcGIS高级制图(视频PPT可下载)


戳原文,更有料!
【声明】内容源于网络
0
0
GIS前沿
分享测绘地信资讯,交流行业软件技巧。
内容 4923
粉丝 0
GIS前沿 分享测绘地信资讯,交流行业软件技巧。
总阅读9.7k
粉丝0
内容4.9k