统计
  • 文章总数:662 篇
  • 评论总数:0 条
  • 分类总数:13 个
  • 最后更新:2月17日

ArcPy批量选择指定属性的要素的方法

本文阅读 2 分钟
首页 ArcGIS 正文
在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()

本文来自投稿,不代表本站立场,如若转载,请注明出处:
如何用section制作图例,看完就学会
« 上一篇 03-13
用ArcGIS进行地形鞍部的提取方法
下一篇 » 03-13