0
点赞
收藏
分享

微信扫一扫

gdal栅格数据处理(python)


栅格数据处理

关闭栅格数据集

这里显示如何关闭栅格数据集。在脚本的中间非常有用,它可以恢复访问数据集所拥有的资源,删除文件等。在脚本的末尾没有必要,因为Python垃圾收集器会在脚本运行时自动执行相同的操作。脚本退出。

from osgeo import gdal

# 打开数据集
ds = gdal.Open("jianda.tif")

# 关闭数据集
ds = None

获取栅格数据集的元数据

获取栅格元数据以进行快速的分辨率检查

from osgeo import gdal

gtif = gdal.Open("jianda.tif")
print(gtif.GetMetadata())

结果:

{'AREA_OR_POINT': 'Area', 'TIFFTAG_DATETIME': '2020:04:30 11:58:38', 'TIFFTAG_RESOLUTIONUNIT': '2 (pixels/inch)', 'TIFFTAG_SOFTWARE': 'Windows Photo Editor 10.0.10011.16384', 'TIFFTAG_XRESOLUTION': '96', 'TIFFTAG_YRESOLUTION': '96'}

获取栅格数据集的波段

获取栅格数据的波段。注意我们如何处理此函数可能引发的运行时错误。

from osgeo import gdal
import sys

gdal.UseExceptions()

try:
src_ds = gdal.Open("jianda.tif")
except RuntimeError as e:
print("不能打开该文件")
print(e)
sys.exit()

try:
srcband = src_ds.GetRasterBand(10)
except RuntimeError as e:
print("Band not found")
print(e)
sys.exit()

结果:

Band not found
jianda.tif: GDALDataset::GetRasterBand(10) - Illegal band #

遍历所有栅格波段

遍历所有栅格波段并执行一些有用的操作,例如列出波段统计信息。

from osgeo import gdal
import sys

src_ds = gdal.Open("m_4111105_ne_12_060_20180829.tif")

if src_ds is None:
print("Unable to open file")
sys.exit()
print("Raster band cout: ",src_ds.RasterCount)

for band in range(src_ds.RasterCount):
band += 1
print("Getting band:",band)
srcband = src_ds.GetRasterBand(band)
if srcband is None:
continue

stats = srcband.GetStatistics(True,True)
if stats is None:
continue
print("[Stat] : min=%.3f, max=%.3f, mean= %.3f, stdDev=%3.f"%(stats[0],stats[1],stats[2],stats[3]))

结果:

Raster band cout:  4
Getting band: 1
[Stat] : min=11.000, max=229.000, mean= 76.991, stdDev= 57
Getting band: 2
[Stat] : min=24.000, max=223.000, mean= 83.685, stdDev= 38
Getting band: 3
[Stat] : min=34.000, max=225.000, mean= 80.593, stdDev= 23
Getting band: 4
[Stat] : min=1.000, max=225.000, mean= 108.005, stdDev= 81



举报

相关推荐

0 条评论