Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ArcPy导出遥感影像属性表的方法

ArcPy导出遥感影像属性表的方法

作者头像
疯狂学习GIS
发布于 2025-04-04 09:36:54
发布于 2025-04-04 09:36:54
13200
代码可运行
举报
文章被收录于专栏:疯狂学习GIS疯狂学习GIS
运行总次数:0
代码可运行

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- 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格式文件。如下图所示,可以看到其就是原本属性表中的内容,且最后多加了一列,也就是原本栅格文件的名称。

  至此,大功告成。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 疯狂学习GIS 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
LV.1
这个人很懒,什么都没有留下~
加入讨论
的问答专区 >
1产品KOL擅长5个领域
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    本文部分代码块支持一键运行,欢迎体验
    本文部分代码块支持一键运行,欢迎体验