获取影像像元数据
本文中的方法可以对第三章进行补充,能够访问像元灰度值,并对其进行处理。
GDAL提供了下面两个函数来访问影像的数值。
-
ReadRaster(xoff=0, yoff=0, xsize=None, ysize=None, buf_xsize=None, buf_ysize=None, buf_type=None, band_list=None, buf_pixel_space=None, buf_line_space=None, buf_band_space=None, resample_alg=0, callback=None, callback_data=None, buf_obj=None)读取图像数据(以二进制的形式)
-
ReadAsArray(xoff=0, yoff=0, xsize=None, ysize=None, buf_obj=None, buf_xsize=None, buf_ysize=None, buf_type=None, resample_alg=0, callback=None, callback_data=None, interleave='band', band_list=None)读取图像数据(以数组的形式)
参数说明:
xoff, yoff指定想要读取的部分原点位置在整张图像中距离全图原点的位置;
xsize, ysize指定要读取部分图像的矩形的长和宽;
buf_xsize, buf_ysize~~放缩比例,最后读取影像的长宽会根据这个比例因子进行缩放;~~测试发现这两个参数并不是缩放比例因子,暂时不清楚这两个参数的意义,但是官方文档中提到,通常不应该使用这两个参数。
已解决:
buf_xsize, buf_ysize并不是缩放比例因子,而是新的指定区域,比如指定xsize, ysize为(20, 20),那么buf_xsize, buf_ysize设置为(50, 50)或者(10, 10),就说明通过已经提取的20矩阵,计算成为50矩阵或者10矩阵。
因此:
进行分析运算时,只需要前4个参数即可,后面两个参数是用于将截取的影像强行放置在限定范围区域中进行缩放。
from osgeo import gdal
from osgeo.gdalconst import *
tif1 = gdal.Open('I:\\MasterLife\\资源与环境遥感\\实验作业一\\caijian2.tif')
print(tif1.ReadAsArray()) # 获取整幅影像的像元数组
help(tif1.ReadAsArray) # 参看函数的帮助
print(tif1.ReadAsArray(xoff = 300, yoff = 300, xsize = 6, ysize = 6))
print(tif1.ReadRaster(xoff = 300, yoff = 300, xsize = 6, ysize = 6))
ReadRaster返回的结果是一个二进制的bytearray;
ReadAsArray返回结果是numpy的数组,类型为int16,方便与numpy结合进行分析和处理。
# ReadAsArray
[[[ 7 2 4 4 4 3]
[
GDAL影像数据读取

最低0.47元/天 解锁文章
862

被折叠的 条评论
为什么被折叠?



