python处理栅格数据
字节序列:
ReadRaster([xoff], [yoff], [xsize], [ysize], [buf_xsize], [buf_ysize], [buf_type], [band_list],[buf_pixel_space], [buf_line_space], [buf_band_space])
xoff是列读取起点,默认值为0。
yoff是行读取起点,默认值为0。
xsize是读取的列数,默认为全部读取。
ysize是读取的行数,默认为全部读取。
buf_xsize是输出数组里的列数,默认值为使用 win_xsize 值。如果此值不同于 win_xsize,则数据将重采样。
buf_ysize是输出数组里的行数,默认值为使用 win_ysize 值。如果此值不同于 win_ysize,则数据将重采样。
buf_type 是返回序列的GDAL目标数据类型,默认值与源数据相同。
band_list是要读取的波段列表,默认读取所有波段。
buf_pixel_space是序列中像素之间的字节偏移,默认值为buf_type的大小。
buf_line_space是序列中行间的字节偏移,默认值是 buf_type 乘以 xsize 。
buf_band_space是序列中列间的字节偏移,默认值是 buf_line_space 乘以 ysize
import os import numpy as np from osgeo import gdal data_dir = r'D:\modis' # os.chdir(os.path.join(data_dir, ' ', ' ')) ds = gdal.Open('MOD03.tif') data = ds.ReadRaster(1400, 2000, 2, 2, band_list=[1]) print(data) # 取出第一个值,将从字节转换为数字 print(data[0]) # 尝试更改第一个像素的值。 # 输出失败,因为不能更改字节字符串 data[0] = 50 # 将字节字符串转换为字节数组 # 更改第一个值,输出成功 bytearray_data = bytearray(data) # bytearray是字节数组 bytearray_data[0] = 50 print(bytearray_data[0]) # import struct # tuple_data = struct.unpack('B' * 4, data) # 指定4个字节 # print(tuple_data) # # numpy_data1 = np.array(tuple_data) # print(numpy_data1) # 假设 'data' 是一个 bytearray 对象 # data = bytearray(b'\x01\x02\x03\x04') # 示例数据 # 将 bytearray 转换为 bytes 对象 data_bytes = bytes(data) # 将字节字符串转换为numpy数组 # 重构一个numpy数组,使其具有2行2列,就像读入的原始数据一样 numpy_data2 = np.frombuffer(data_bytes, np.int8) reshaped_data = np.reshape(numpy_data2, (2,2)) print(reshaped_data)
,Best Wish 不负年华