python遥感数据有偿处理_利用python读写tiff遥感影像数据

from osgeo import gdal

# 读图像文件

def read_img(filename):

dataset = gdal.Open(filename) # 打开文件

im_width = dataset.RasterXSize # 栅格矩阵的列数

im_height = dataset.RasterYSize # 栅格矩阵的行数

im_geotrans = dataset.GetGeoTransform() # 仿射矩阵

im_proj = dataset.GetProjection() # 地图投影信息

im_data = dataset.ReadAsArray(0, 0, im_width, im_height).astype(np.float) # 将数据写成数组,对应栅格矩阵

del dataset # 关闭对象,文件dataset

return im_proj, im_geotrans, im_data, im_height, im_width

def write_img(filename, im_proj, im_geotrans, im_data):

# gdal数据类型包括

# gdal.GDT_Byte,

# gdal .GDT_UInt16, gdal.GDT_Int16, gdal.GDT_UInt32, gdal.GDT_Int32,

# gdal.GDT_Float32, gdal.GDT_Float64

# 判断栅格数据的数据类型

if 'int8' in im_data.dtype.name:

datatype = gdal.GDT_Byte

elif 'int16' in im_data.dtype.name:

datatype = gdal.GDT_UInt16

else:

datatype = gdal.GDT_Float32

# 判读数组维数

if len(im_data.shape) == 3:

im_bands, im_height, im_width = im_data.shape

else:

im_bands, (im_height, im_width) = 1, im_data.shape

# 创建文件

driver = gdal.GetDriverByName("GTiff") # 数据类型必须有,因为要计算需要多大内存空间

dataset = driver.Create(filename, im_width, im_height, im_bands, datatype)

dataset.SetGeoTransform(im_geotrans) # 写入仿射变换参数

dataset.SetProjection(im_proj) # 写入投影

if im_bands == 1:

dataset.GetRasterBand(1).WriteArray(im_data) # 写入数组数据

else:

for i in range(im_bands):

dataset.GetRasterBand(i + 1).WriteArray(im_data[i])

del dataset

if __name__=='__main__':

proj, geotrans, values, row, column = read_img(输入数据) # 读数据

write_img(r'输出地址', proj, geotrans, 输出影像名称)#写数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值