最近做项目,发现网上关于利用python与GDAL读取遥感影像数据的资料比较少。因此整理了一些,以方便自己学习。
1.首先确认自己电脑上安装好python版的GDAL库。这个会以后有时间慢慢整理。
2. 导入gdal库
from osgeo import gdal
3. 注册GDAL库
gdal.AllRegister()
4. 启动GDAL所支持的文件格式驱动,这里的format为'tiff','jpg'等GDAL支持的栅格数据
Driver = gdal.GetDriverByName(format)
5. 打开文件,如果文件打开成功,返回1.如果文件不能打开,则返回零。
fh = gdal.Open( filename )
6. fh为文件句柄,包含了文件的行列号等信息。
bands = fh.RasterCount //文件波段数
xsize = fh.RasterXSize //文件行数
ysize = ysize = fh.RasterYSize //文件列数
band_type = fh.GetRasterBand(1).DataType //数据类型
projection = fh.GetProjection() //投影参数信息
geotransform = fh.GetGeoTransform() //文件几何信息
文件几何信息是一维六元数组,主要是:
ulx = geotransform[0] //左上x坐标
resolutionx = geotransform[1] //x方向分辨率
rotationx = geotransform[2] //x方向旋转
uly = geotransform[3] //左上y坐标
rotationy = geotransform[4] //y方向旋转
resolutiony = geotransform[5] //y方向分辨率
GDAL读取文件时把遥感数据倒置了,因此y方向分辨率为赋值。
ct = GetRasterBand(1).GetRasterColorTable() //数据颜色表
7. 读取影像数据
band = fh.GetRasterBand(1) //获取波段
data = band.ReadAsArray( xoff, yoff, xsize, ysize, t_xsize, t_ysize ) //获取影像数据
xoffset :x方向偏移
yoffset: y方向偏移
xsize: x方向数据大小
ysize: y方向数据大小
t_xsize : 将图像转换为的x大小
t_ysize : 将图像转换为的y大小
如果您要读取一整景影像,则如下:
data = band.ReadAsArray( 0, 0, xsize, ysize)
如果您分块读取影像数据操作
data = band.ReadAsArray( 0, 0, xsize, ysize)