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)
View Code
复制代码

 




posted @   有翅膀的大象  阅读(30)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示