大家好,我在尝试在python中自动执行按位置选择和复制功能的过程时遇到了麻烦。我的代码如下:逻辑似乎是正确的,但一旦它运行,它永远运行,这绝对超过了我在Arcpro中运行的时间。任何想法都会很感激,谢谢!
进口arcpy
从arcpy导入环境
env。workspace = "D:/Backup/shapefile/NE_validation"
outworkspace = "D:/Backup/shapefile/NE_validation"
NEEEfishnet = "D:/Backup/shapefile/NE_validation/ ne_validate .gdb/NEEE_NewEngland_fishnet"
shplist = arcpy.ListFeatureClasses("*Point*")
对于shplist中的SHP:
# select by location
arcpy.management。SelectLayerByLocation(NEEEfishnet, "INTERSECT", shp, None, "NEW_SELECTION", "NOT_INVERT")
#导出选中的特性(使用复制特性工具)
outfeature = outworkspace + "/" + NEEEfishnet[52:75] + shp[37:40] + ".shp"
arcpy.management。CopyFeatures(NEEEfishnet, outfeature, ", None, None, None)
#清除选区
arcpy。SelectLayerByAttribute_management (NEEEfishnet“CLEAR_SELECTION”)
更新:我修改了代码,增加了两个功能:制作特征层和保存层到文件。代码可以运行,但不能生成可打开的shapefile。错误信息如下所示。我打算停止更新,也许有一天会有人找到解决这个问题的方法……
解决了!进入解决方案。
选择不适用于数据集,它们适用于图层或视图。虽然你现在可以将数据集直接传递给选择层工具(个人而言,我不同意几年前Esri做的这个改变),但选择并不是直接在数据集上进行的。相反,当数据集直接传递给选择图层工具时,将在幕后创建一个图层或视图,并将选择放置在其上。对于您的代码,您没有检索自动生成的层。
我个人仍然认为最好的做法是先创建一个图层,然后将其传递到选择图层工具。