| 课程安排 |
|
|
破“卷”立新-国自然/省级基金项目撰写技巧全流程实战 |
|
|
AI赋能·SCI论文从实验设计到发表全流程实践训练营 |
|
|
|
|
9月20日-21日、 26日-27日 |
|
|
10月17日-18日、 24日-25日 |
全链路自主构建智慧科研写作系统——融合LLM语义理解、多智能体任务协同与n8n自动化工作流构建培训班 |
|
|
AI智慧高光谱遥感实战精修班暨手撕99个案例项目、全覆盖技术链与应用场景一站式提升方案 |
本文介绍使用 Python 和地理空间数据抽象库 GDAL 自动处理栅格数据的基本技术。栅格文件广泛用于存储地形模型、遥感数据及其衍生产品(如植被指数等),通常数据量大且以分块形式存储,因此高效处理依赖自动化流程。内容涵盖如何通过 Python 的 GDAL/OGR API 及命令行工具实现栅格数据的读写与批量处理。
一、使用 GDAL 在 Python 中打开栅格文件
GDAL 支持多种栅格格式(如 GeoTIFF、ASCII Grid、Erdas Imagine 等)的读写操作。导入 osgeo.gdal 后,系统自动注册所有支持的驱动程序。
Landsat 8 数据中的各波段以独立 GeoTIFF 文件存储,每个波段对应不同电磁波谱范围的地表反射率信息。
from osgeo import gdal
filepath = r"LandsatData/LC81910182016153LGN00_sr_band4.tif"
# 打开文件
raster = gdal.Open(filepath)
type(raster)
1. 读取栅格文件属性
GDAL 数据集对象包含投影、尺寸、波段数和元数据等关键信息:
# 投影信息
raster.GetProjection()
# 图像维度
raster.RasterXSize, raster.RasterYSize
# 波段数量
raster.RasterCount
# 元数据
raster.GetMetadata()
2. 获取栅格波段
通过 GetRasterBand() 方法获取指定波段对象:
# 读取第一个波段
band = raster.GetRasterBand(1)
type(band)
# 获取数据类型
gdal.GetDataTypeName(band.DataType)
当多个波段集成在一个文件中时,RasterCount 大于 1;若为单文件单波段(如 Landsat 8 原始包),则需分别加载。
3. 波段统计信息
计算并输出波段的最小值、最大值及 NoData 值:
# 若未计算统计值,则执行计算
if band.GetMinimum() is None or band.GetMaximum() is None:
band.ComputeStatistics(0)
print("Statistics computed.")
print("[ NO DATA VALUE ] = ", band.GetNoDataValue())
print("[ MIN ] = ", band.GetMinimum())
print("[ MAX ] = ", band.GetMaximum())
二、将栅格文件作为数值数组读取
为便于进行数学运算,可将 GDAL 数据转换为 NumPy 数组,利用其强大的计算能力。
# 将 GDAL 数据集转为 NumPy 数组
rasterArray = raster.ReadAsArray()
type(rasterArray), type(raster)
raster 为 GDAL 数据集对象,rasterArray 为 NumPy 数组,适用于后续分析。
也可通过 gdal_array 模块直接读取:
from osgeo import gdal_array
rasterArray = gdal_array.LoadFile(filepath)
1. 处理 NoData 值
NoData 值会影响计算结果,建议使用掩膜数组排除干扰:
import numpy as np
nodata = band.GetNoDataValue()
rasterArray = np.ma.masked_equal(rasterArray, nodata)
rasterArray.min()
2. 关闭栅格数据释放资源
及时释放内存资源:
raster = None
band = None
三、GDAL 命令行实用工具
GDAL 提供多个命令行工具用于高效批处理,包括 gdalwarp、gdal_merge.py 和 gdal_calc.py。
1. 使用 gdalwarp 裁剪图像
基于边界框裁剪影像:
gdalwarp -te xmin ymin xmax ymax inputfile.tif outputfile.tif
可通过 Python 脚本生成批量裁剪命令,并保存为 shell 或 bat 文件执行:
import glob, os
FileList = glob.glob(os.path.join(r'/home/geo/LandsatData', '*band*.tif'))
xmin, ymin, xmax, ymax = (0, 0, 0, 0) # 替换为实际坐标
command = ""
for fp in FileList:
inputfile = fp
outputfile = inputfile[:-4] + "_clip.tif"
command += "gdalwarp -te %s %s %s %s %s %s \n" % (xmin, ymin, xmax, ymax, inputfile, outputfile)
with open("ClipTurkufromLandsat.sh", 'w') as f:
f.write(command)
在终端运行:bash ClipTurkufromLandsat.sh(Windows 用户使用 .bat 文件)。
2. 使用 gdal_merge.py 合成波段堆栈
将裁剪后的绿、红、近红外波段合并为假彩色图像:
import os
inputfiles = "band3_clip.tif band4_clip.tif band5_clip.tif"
outputfile = "Landsat8_GreenRedNir.tif"
command = "gdal_merge.py -separate %s -o %s" % (inputfiles, outputfile)
os.system(command)
3. 使用 gdal_calc.py 进行栅格计算
gdal_calc.py 是命令行栅格计算器,支持简单表达式运算:
gdal_calc.py -A input1.tif -B input2.tif --calc="A+B" --outfile=output.tif --co="COMPRESS=LZW"
参数说明:
--calc:定义计算公式(如 A+B、A*B)--co="COMPRESS=LZW":压缩输出文件,节省空间
版权声明:本文内容整理自【倾城一少】原创文章,原文链接:https://blog.csdn.net/u010329292/article/details/128343521,仅作学术分享,版权归原作者所有,涉及侵权请联系我们删除。
| AI多领域融合课程、论文写作、科研绘图、语言类 |
|
|
|
9月25日-26日 |
AI赋能·SCI论文从实验设计到发表全流程实践训练营 |
|
9月20日-21日、 27日-28日 |
GeoAI大模型驱动的地球科学智能计算前沿实践研修班 |
破“卷”立新-国自然/省级基金项目撰写技巧全流程实战 |
|
10月17日-18日、24日-25日 |
全链路自主构建智慧科研写作系统——融合LLM语义理解、多智能体任务协同与n8n自动化工作流构建培训班 |
|
9月20日-21日、 26日-27日 |
一图胜千言-顶刊级科研绘图工坊暨AI支持下Nature级数据可视化高级培训班 |
2025最新AI-Python机器学习与深度学习实践技术应用培训班 |
|
|
|
|
10月17日-18日、24日-25日 |
AI智慧高光谱遥感实战精修班暨手撕99个案例项目、全覆盖技术链与应用场景一站式提升方案 |
| 农林生态、遥感、大气科学 |
9月26日-28日 |
2025最新AI+CMIP6数据分析与可视化、降尺度技术与气候变化的区域影响、极端气候分析高级培训班 |
|
10月18日-19日、 24日-26日 |
AI赋能Python-GEE遥感云大数据分析、可视化与Satellite Embedding创新应用高级培训班 |
|
10月18日-19日、 25日-26日 |
2025年最新AI与Python在地球科学多源数据交叉融合中的前沿技术应用高级培训班 |
AI+Python驱动的无人机生态三维建模与碳储/生物量/LULC估算全流程实战技术培训班 |
|
10月24日-27日 |
最新HYDRUS全模块进阶应用:土壤–水–污染物耦合模拟案例精讲培训班 |
双碳目标下基于“遥感+”集成技术的碳储量、碳排放、碳循环、温室气体等多领域监测与模拟实践高级培训班 |
| 水文水资源、地质、遥感、测量 |
|
9月13日-15日、 19日-21日 |
地表水-地下水耦合建模全景解析暨SWAT-MODFLOW地表与地下协同模拟及多情景专题应用培训班 |
|
10月18日-19日、 25日-26日 |
全流程GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术深度应用 |
声明:本号对所发布内容保持中立,如有侵权或不实信息,请联系后台及时撤改。

