当前位置: 首页 > news >正文

ArcPy批量将栅格文件的属性表导出为Excel表格的方法

  本文介绍基于Python中的ArcPy模块,批量导出多个栅格数据属性表,并将结果保存为Excel表格的方法。

  首先,我们来明确一下本文的需求。现在在一个文件夹内,有多个.tif格式的栅格数据。其中,每一个栅格数据都有一张属性表,如下图所示。

  我们现在希望,对于文件夹下的每一个栅格文件,都将其对应的属性表导出到本地,并保存为Excel表格。

  明确了需求,即可开始撰写代码。本文所用代码如下。

# -*- coding: utf-8 -*-

import arcpy
import os
ws = r'E:/06_Extra/202503_SC/TIFF'
outPath = r'E:/06_Extra/202503_SC/Re/'
outExt = ".csv"
arcpy.env.workspace = ws
rasters = arcpy.ListRasters("*")
for raster in rasters:
    rasloc = os.path.join(ws, raster)
    print(rasloc)
    fields = '*'
    flds = arcpy.ListFields(rasloc)
    header = ','.join([fld.name for fld in flds])
    if len(flds) != 0:
        outCSV = os.path.join(outPath, '{0}{1}'.format(raster, outExt))
        with open(outCSV,'w') as f:
            header += ',RasterName\n'
            f.write(header)
            curs = arcpy.SearchCursor(rasloc)
            for row in curs:
                lst = [row.getValue(fld.name) for fld in flds]
                lst.append(raster)
                line = ','.join(str(a) for a in lst)
                f.write(line + '\n')
del row, curs

  上述代码的含义也很简单。

  首先,arcpy.env.workspace用以设置工作空间路径,也就是栅格文件的存储路径,用于读取栅格文件;outPath定义输出.csv格式文件的路径。

  随后,arcpy.ListRasters("\*")用以获取工作空间内所有栅格文件的列表,这里的"\*"表示匹配所有文件名。获取得到文件后,通过for raster in rasters遍历每个栅格文件,并拼接完整路径rasloc

  接下来,arcpy.ListFields(rasloc)获取当前栅格文件的字段列表(即属性表的列名),并将字段名用逗号连接为字符串header;额外添加RasterName列,用于记录原始栅格文件名。

  随后,arcpy.SearchCursor用以遍历栅格属性表的每一行数据,逐行读取字段值。将每行的字段值转换为字符串列表lst,并追加当前栅格文件名raster,最后拼接为.csv格式的行数据写入文件。

  执行上述代码,即可在结果路径中,看到每一个栅格文件属性表的导出结果文件——每一个栅格文件对应一个.csv格式文件,.csv格式文件的名称就是原本栅格文件的名称。如下图所示。

  我们就以本文最开头那张图所示的属性表为例,来查看一下其所对应.csv格式文件。如下图所示,可以看到其就是原本属性表中的内容,且最后多加了一列,也就是原本栅格文件的名称。

  至此,大功告成。

欢迎关注:疯狂学习GIS

相关文章:

  • 【C++ 进阶】语句:从基础到实践
  • BMS电池管理系统
  • C语言-装饰器模式详解与实践 - LED控制系统
  • 菜单(路由)权限按钮权限路由进度条
  • Sqoop 常用命令
  • stm32标准库开发需要的基本文件结构
  • CUDA 学习(4)——CUDA 编程模型
  • 线段树与扫描线 —— 详解算法思想及其C++实现
  • Normal distribution (正态分布)
  • Windows安装Jenkins配置Allure踩坑,必须单独配置当前windows系统为新的node节点,才可在工具位置中指定节点服务器allure的位置
  • C语言-访问者模式详解与实践
  • Spring boot 3.4 后 SDK 升级,暨 UI API/MCP 计划
  • 线程控制学习
  • MCP Facade Generator:助力 MCP 协议接口实现的强大工具
  • 【C语言】C语言使用随机数srand,rand
  • nacos-actuator漏洞
  • apt 常见报错及解决方法
  • 本地部署 Firecrawl
  • 【nodejs】爬虫路漫漫,关于nodejs的基操
  • CAJ转PDF:复杂的转换背后有哪些挑战?
  • 原核试验基地司令员范如玉逝世,从事核试验研究超40年
  • 新时代,新方志:2025上海地方志论坛暨理论研讨会举办
  • 一箭六星,朱雀二号改进型遥二运载火箭发射成功
  • 辽宁援疆前指总指挥王敬华已任新疆塔城地委副书记
  • 戛纳打破“疑罪从无”惯例,一法国男演员被拒之门外
  • 中国情怀:时代记录与家国镜相|澎湃·镜相第三届非虚构写作大赛征稿启事