微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-arcpy.ListFeatureClasses()用于多个工作区

我试图将arcpy.ListFeatureClasses()用于同一脚本中的多个工作区.查看其他示例脚本,我想我可以简单地将工作区分配给一个变量,然后在arcpy.ListFeatureClasses()中使用该变量.

例如:

workspace = "C:\\location\\"
fcs = arcpy.ListFeatureClasses(workspace)
for fc in fcs:
    print fc

但这会导致错误

 TypeError: 'nonetype' object is not iterable

当我只对认工作空间中的要素类感兴趣时,我就可以使用arcpy.ListFeatureClasses()进行工作,例如:

arcpy.env.workspace = "C:\\location\\"
fcs = arcpy.ListFeatureClasses()

但是我有兴趣在脚本的每个步骤中浏览不同的文件夹,并且我不想为每个步骤重置认工作区.

此外,为什么我看到别人的脚本(包括我的GIS编程教授的脚本)中使用的第一个示例,并且它们似乎在那些实例中起作用,但是我遇到了错误.

感谢您提供的任何帮助或建议.

解决方法:

您的第一个示例肯定不会起作用. arcpy.ListFeatureClasses()带有3个可选参数,并且工作空间不是其中的一部分,必须预先定义,有关确切语法,请参见函数Help page.

重置当前工作区并不是什么大问题.根据您使用的工作空间的类型(文件夹,地理数据库,SDE,各种…)以及它们的结构(它们是否都在同一位置?您是否有特定文件夹/数据库的列表?),首先列出它们,然后遍历工作区以列出其要素类:

# 1. List workspaces

listWS = [r"C:\DATA", r"D:\PROJECT\geodatabase.gdb", r"D:\whatever.mdb"]
# use this if the workspaces are in varIoUs locations

# or: 

arcpy.env.workspace = r"C:\DATA"
listWS = arcpy.ListWorkspaces()
# use this if the workspaces are in the same location

# 2. Iterate over the workspaces and list their feature classes

for ws is listWS:
 arcpy.env.workspace = ws
 listFC = arcpy.ListFeatureClasses()
 for fc in listFC:
  # do something

有关arcpy.ListWorkspaces()的信息,请参见Help page,以了解如何将列表限制为某些类型的工作空间或使用通配符.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐