1.gdal包簡介
gdal是空間數據處理的開源包,其支持超過100種柵格數據類型,涵蓋所有主流GIS與RS數據格式,包括Arc/Info ASCII Grid(asc),GeoTiff (tiff),Erdas Imagine Images(img),ASCII DEM(dem) 等格式。
2.安裝gdal包
(1)通過此鏈接查找並下載gdal包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame(根據自己的系統及python版本選擇對應的gdal包)
(2)在dos命令行下切換到包所在的文件夾,並運行pip install 包名進行安裝。
3.讀取柵格數據
#導入gdal包
from osgeo import gdal
#導入numpy包(支持高維數組和矩陣運算,也提供了許多數組和矩陣運算的函數)
import numpy as np
#打開文件
dataset=gdal.Open("fdem.tif")
#柵格矩陣的列數
im_width = dataset.RasterXSize
#柵格矩陣的行數
im_height = dataset.RasterYSize
#波段數
im_bands = dataset.RasterCount
#仿射矩陣,左上角像素的大地坐標和像素分辨率。
#共有六個參數,分表代表左上角x坐標;東西方向上圖像的分辨率;如果北邊朝上,地圖的旋轉角度,0表示圖像的行與x軸平行;左上角y坐標;
#如果北邊朝上,地圖的旋轉角度,0表示圖像的列與y軸平行;南北方向上地圖的分辨率。
im_geotrans = dataset.GetGeoTransform()
#地圖投影信息
im_proj = dataset.GetProjection()
#讀取某一像素點的值
#(1)讀取一個波段,其參數為波段的索引號,波段索引號從1開始(我打開的這幅圖像只有一個波段)
band=dataset.GetRasterBand(1)
#(2)用ReadAsArray(<xoff>, <yoff>, <xsize>, <ysize>),讀出從(xoff,yoff)開始,大小為(xsize,ysize)的矩陣。以下為讀取整幅圖像
im_datas=band.ReadAsArray(0,0,im_width,im_height)
#(3)獲取某一或某幾個像素的值(查看10~14 行和 20~25 列的數據)
data=im_datas[10:15,20:26]
#釋放內存。如果不釋放,在arcgis或envi中打開該圖像時顯示文件已被占用
del dataset
