Arcpy数据列表与遍历

(1)返回数据列表的函数

ArcPy中提供了大量可以返回数据列表的函数,可以方便后续遍历数据。

函数名说明
ListFields(dataset, wild_card, field_type)返回数据集中的字段列表
ListIndexes(dataset, wild_card)返回数据集中属性索引列表
ListDatasets(wild_card, feature_type)返回工作空间中的数据集
ListFeatureClasses(wild_card, feature_type, feature_dataset)返回工作空间中的要素类
ListFiles(wild_card)返回工作空间中的文件
ListRasters(wild_card,raster_type)返回工作空间中的栅格数据
ListTables(wild_card, table_type)返回工作空间中的表
ListWorkspaces(wild_card, workspace_type)返回工作空间列表
ListVersions(sde_workspace)返回版本列表

参数说明:wild_card:字符串参数,用于过滤,支持通配符。

语法:ListFeatureClasses ( { wild_card },  { feature_type }, { feature_dataset } )    {  }为可选参数

例:ListFeatureClasses ( "lr*”,  "point" )   ——返回文件名以lr开头,并且要素类型是点的所有要素类

 

arcpy.env.workspace="c:/map.gdb"
fcs = arcpy.ListFeatureClasses("*","polygon")
fcCount = len(fcs)

(2)遍历数据列表
使用循环语句遍历。

 

dirPath = "D:/mapdata/test/worldshp"
arcpy.env.workspace=dirPath
ftClasses = arcpy.ListFeatureClasses()
for ftClass in ftClasses:
    print(ftClass)

(3)返回工具、工具箱和环境设置列表的函数
工具列表:arcpy.ListTools({wildcard})
环境设置列表:arcpy.ListEnvironments({wildcard})
工具箱列表:arcpy.ListToolboxes({wildcard})

 

(4)遍历子目录
ArcPy中遍历目录以及子目录,需要使用arcpy.da.Walk函数。Walk(top, topdown, onerror, followlinks, datatype, type)返回结果是一个元组(dirpath, dirnames,filenames)

 

workspace = "D:/mapdata/test/china/"
for dirpath,dirnames,filenames in arcpy.da.Walk(workspace,datatype="FeatureClass",type="Point"):
    print(dirpath,type(dirpath))
    print(dirnames)
    print(filenames)



作者:辛立
链接:https://www.jianshu.com/p/3355b6efc0d6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: arcpy是一个强大的Python库,可以用于处理GIS数据。如果要遍历栅格数据并将数据复制到同名文件夹内,可以使用以下代码: ```python import arcpy import os # 设置工作目录 arcpy.env.workspace = r"path/to/workspace" # 获取所有的栅格数据 raster_list = arcpy.ListRasters() # 遍历所有栅格数据 for raster in raster_list: # 获取栅格数据的路径和名称 raster_path = os.path.dirname(raster) raster_name = os.path.basename(raster) # 创建同名文件夹 output_folder = os.path.join(raster_path, raster_name) if not os.path.exists(output_folder): os.makedirs(output_folder) # 复制栅格数据到同名文件夹内 arcpy.CopyRaster_management(raster, os.path.join(output_folder, raster_name)) ``` 这段代码首先设置工作目录,然后获取所有的栅格数据。接下来,遍历所有的栅格数据,获取栅格数据的路径和名称,并创建同名文件夹。最后,使用`arcpy.CopyRaster_management`将栅格数据复制到同名文件夹内。 ### 回答2: arcpy是一个用于处理地理空间数据的Python模块。要遍历栅格数据并将数据复制到同名文件夹内,可以按照以下步骤进行操作: 1. 首先,需要导入arcpy模块: import arcpy 2. 然后,使用arcpy.ListRasters函数获取当前工作空间中的所有栅格数据: rasters = arcpy.ListRasters() 3. 创建一个循环遍历所有栅格数据: for raster in rasters: # 获取当前栅格数据的名称,并去掉文件扩展名 raster_name = arcpy.Describe(raster).baseName # 创建同名文件夹 folder_path = arcpy.env.workspace + "\\" + raster_name if not arcpy.Exists(folder_path): arcpy.CreateFolder_management(arcpy.env.workspace, raster_name) # 复制栅格数据到同名文件夹内 arcpy.CopyRaster_management(raster, folder_path + "\\" + raster_name) 以上代码中,arcpy.Describe函数用于获取栅格数据的属性信息,arcpy.env.workspace表示当前工作空间路径,arcpy.Exists函数用于判断文件夹是否存在,arcpy.CreateFolder_management函数用于创建文件夹,arcpy.CopyRaster_management函数用于复制栅格数据到指定路径。 这样,就可以通过arcpy遍历栅格数据并将数据复制到同名文件夹内了。 ### 回答3: arcpy是ArcGIS软件中的一个Python模块,它可以用于地理空间数据的处理和分析。如果想要遍历栅格数据并将数据复制到同名文件夹内,可以使用arcpy模块来完成这个任务。 首先,需要导入arcpy模块,然后使用ListRasters函数来获取栅格数据列表。这个函数可以接收一个输入文件夹路径,返回一个包含所有栅格数据列表。 接下来,遍历栅格数据列表。对于每一个栅格数据,首先获取它的文件名(包括扩展名),然后使用os模块中的splitext函数将文件名和扩展名分开。再次使用os模块中的join函数将栅格数据的文件名与输入文件夹路径拼接起来,得到同名文件夹的路径。 然后,使用arcpy中的CopyRaster函数来复制栅格数据。这个函数需要提供栅格数据的输入路径、输出路径和可选的数据格式。 最后,重复上述步骤直到遍历完所有栅格数据。 下面是一个示例代码: ```python import arcpy import os input_folder = "输入文件夹路径" # 获取栅格数据列表 raster_list = arcpy.ListRasters("*", "ALL", input_folder) # 遍历栅格数据列表 for raster in raster_list: # 获取栅格数据的文件名和扩展名 file_name, file_extension = os.path.splitext(raster) # 构建同名文件夹的路径 output_folder = os.path.join(input_folder, file_name) # 如果同名文件夹不存在,则创建 if not os.path.isdir(output_folder): os.mkdir(output_folder) # 复制栅格数据到同名文件夹 arcpy.CopyRaster_management(os.path.join(input_folder, raster), os.path.join(output_folder, raster), "", "", "", "NONE", "NONE", "") ``` 以上代码会遍历输入文件夹中的所有栅格数据,并将每一个栅格数据复制到同名的文件夹内。注意要替换"输入文件夹路径"为实际的输入文件夹路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值