使用Python按属性选择Arcmap


9

我希望下面选择(突出显示)与网格相交的“项目”层,然后从选定的“网格”中提取一条记录。我不需要保存该层。

注意:在Python控制台窗口的ArcMap中运行脚本。

import arcpy

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")

# Then add a selection to the layer based on location to features in another feature class 
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")

该代码运行并且没有给出错误,但是它没有选择(突出显示)任何功能。知道为什么吗?运行也真的很慢。

结果

基本上我正在尝试这样做:

在此处输入图片说明

这几乎很快就可以运行,但是我想使用python来做同样的事情。我只需要选定要素表中的值,就不需要该层的副本。

解决方案的一部分可以是使用在存储器的工作区,其是

将数据写入内存工作区通常比写入其他格式快得多...

只是不确定如何实现内存中的工作区


您是否正在ArcMap中(即在Python控制台中)运行此脚本?还是从ArcMap外部(即在IDLE或其他Python编辑器中)?ArcMap将“选择(突出显示)任何要素”的唯一方法是在ArcMap内部。我怀疑您是从ArcMap外部运行脚本的,因为该import arcpy命令需要一段时间才能运行。
dmahr 2012年

我正在Python控制台窗口的ArcMap中运行脚本。
Tristan转发

如果从ArcMap中运行它,则不需要该arcpy.MakeFeatureLayer()行,因为project它已经是图层。做吧arcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")
dmahr 2012年

很棒的问题格式!
Brad Nesom

感谢@dmahr,它的运行速度仍然比内置的“按属性选择”慢,但可以运行。
Tristan Forward

Answers:


2

好问题!

Dmahr是正确的,只需选择图层而不是创建要素图层即可更快。我还将添加其余的变量,即使它们是可选的。

arcpy.SelectLayerByLocation_management ("project_lyr", "INTERSECT", "Grid", "#", "NEW_SELECTION")

我发现的另一件事是,在ArcMap的python窗口中运行命令总是较慢。我发现,如果将代码写入.py文件,将其作为脚本添加到工具箱中,然后运行它,则处理会更快。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.