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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章