ArcGIS Python编程案例-数据查询和选择
目录
内容列表
案例
1、创建要素图层和表视图
注:要素图层和表视图会作为临时存储在内存上的中间数据集,来专门用于像按位置选择和按属性选择工具的一类工具。尽管这些临时数据集可以保存,这些临时图层可以通过右键选择保存图层文件(Save As Layer File)或简单地保存地图文档文件来保存到硬盘中,不过大多数情况下都不需要。
创建要素图层:
>>> import arcpy
>>> arcpy.env.workspace="G:\ArcpyBook\data\CityOfSanAntonio.gdb"
>>> try:
... flayer=arcpy.MakeFeatureLayer_management("Burglary","bur614")
... except:
... print "An error occurred during creation"
创建表视图:
import arcpy
... arcpy.env.workspace="G:\ArcpyBook\data\CityOfSanAntonio.gdb"
... try:
... tView=arcpy.MakeTableView_management("Crime2009Table","Crime2009TView")
... except:
... print "An error occurred during creation"
2、使用按属性选择图层工具(Select Layer by Attribute)选择要素和行
按属性选择工具利用要素图层或表视图以及查询条件和选择类型来选择记录。默认情况下,选择类型设置为创建一个新选择内容。其他的选择类型包括”添加到当前选择内容“,”从当前选择内容中移除“,”从当前选择内容中选择“,”切换选择内容“以及”清除选择内容“等。下面总结了每种选择类型:NEW_SELECTION
:创建一个新选择内容,默认选择方式。ADD_TO_SELECTION
:根据查询条件,将选择内容添加到现有的选择内容中。REMOVE_FROM_SELECTION
:根据查询条件,将选择内容从现有的选择内容中移除。SUBSET_SELECTION
:将选择内容与现有的选择内容组合,返回相同的选择内容。SWITCH_SELECTION
:选择未选择内容,移除已选择的内容。CLEAR_SELECTION
:移除所有选择内容。
以下是按属性选择工具的语法:arcpy.SelectLayerByAttribute_management(<input feature layer or table view>,{selection method},{where clasuse})
本案例中,你会学习如何使用按属性选择图层工具从要素类中选择要素。你会使用在之前案例中学习到的技巧来构建查询语句,创建一个要素图层,最后调用按属性选择图层工具。
>>> import arcpy
... arcpy.env.workspace="G:\ArcpyBook\data\CityOfSanAntonio.gdb"
... try:
... qry='"SVCAREA"=\'North\''
... flayer=arcpy.MakeFeatureLayer_management("Burglary","Bu614")
... arcpy.SelectLayerByAttribute_management(flayer,"NEW_SELECTION",qry)
... cnt=arcpy.GetCount_management(flayer)
... print "The number of selected records is:"+str(cnt)
... except:
... print "An error occurred during selection"
...
#The number of selected records is:7520
3、使用按位置选择图层(Select Layer by Location)工具选择要素
你在使用按位置选择图层工具时可以选择多种不同类型的空间关系,其中包括相交(intersect),包含(contains),包含于(with),边界接触(boundary touches),一致性(is identical)及其他类型。如果没有指定空间关系,默认值为相交关系。
在本案例中,你会学习如何在Python脚本中调用按位置选择工具来根据空间关系选择要素。你会使用该工具来选择发生在Edgewood
学区内的盗窃案件。
>>> import arcpy
... arcpy.env.workspace="G:\ArcpyBook\data\CityOfSanAntonio.gdb"
... try:
... flayer=arcpy.MakeFeatureLayer_management("Burglary","Bu6")
... arcpy.SelectLayerByLocation_management(flayer,"COMPLETELY_WITHIN","G:\ArcpyBook\Ch6\EdgewoodSD.shp")
... cnt=arcpy.GetCount_management(flayer)
... print "The number of selected records is:"+str(cnt)
... except:
... print "A error occurred during selection"
...
#The number of selected records is:1470
调用复制要素(Copy Feature)工具将临时图层写入到一个新的要素类中。
>>> import arcpy
... arcpy.env.workspace="G:\ArcpyBook\data\CityOfSanAntonio.gdb"
... try:
... flayer=arcpy.MakeFeatureLayer_management("Burglary","Bu61")
... arcpy.SelectLayerByLocation_management(flayer,"COMPLETELY_WITHIN","G:\ArcpyBook\Ch6\EdgewoodSD.shp")
... arcpy.CopyFeatures_management(flayer,r"G:\tetd.shp")
... except:
... print "a error "
4、结合使用空间查询和属性查询
Edgewood
学区内的所有盗窃案。Edgewood
学区内的盗窃案,并生成一个选择内容。按属性选择图层工具相同的临时要素图层并使用where
语句来查找发生在周一的盗窃案。此外,按属性选择图层工具还会指定从按位置选择图层工具所选择内容中进行选择。最后,你将结合空间查询和属性查询的选择结果的数量打印出来。>>> import arcpy
... arcpy.env.workspace="G:\ArcpyBook\data\CityOfSanAntonio.gdb"
... try:
... qry='"DOW"=\'Mon\''
... flayer=arcpy.MakeFeatureLayer_management("Burglary","Bu643")
... arcpy.SelectLayerByLocation_management(flayer,"COMPLETELY_WITHIN","G:\ArcpyBook\Ch6\EdgewoodSD.shp")
... arcpy.SelectLayerByAttribute_management(flayer,"SUBSET_SELECTION",qry)
... cnt=arcpy.GetCount_management(flayer)
... print "The number of selected records is:"+str(cnt)
... except:
... print "Error in selection"
...
#The number of selected records is:197
其中选择类型参数指定为SUBSET_SELECTION
,即创建一个新的选择内容后在于已存在的选择内容比较,两个选择内容中相同的部分被选择出来。where
语句作为工具的第三个参数定义了用来查找所有发生在周一的盗窃案的属性查询条件。查询语句中使用DOW
字段来查找Mon
值。
参考资料
https://www.jianshu.com/p/90907325f2ca
转载自:https://blog.csdn.net/gislaozhang/article/details/80695264