python使用gdal读写栅格数据

8 篇文章 1 订阅
该代码示例展示了如何使用GDAL库在Python中读取和写入TIFF图像文件。`readTif()`函数用于获取图像的尺寸、波段数、数据及地理信息,而`writeTiff()`函数则用于创建新的TIFF文件,处理异常值并设置数据类型和投影信息。
摘要由CSDN通过智能技术生成
import os
import gdal
import numpy as np
import pandas as pd

def readTif(fileName):
    dataset = gdal.Open(fileName)
    if dataset == None:
        print(fileName + "文件无法打开")
        
    width = dataset.RasterXSize 
    height = dataset.RasterYSize 
    bands = dataset.RasterCount 

    data = dataset.ReadAsArray()
    geotrans = dataset.GetGeoTransform()
    proj = dataset.GetProjection()
    return width, height, bands, data, geotrans, proj

def writeTiff(im_data, im_geotrans, im_proj, path):
    im_data[np.isinf(im_data)] = 0  #处理异常值
    im_data[np.isneginf(im_data)] = 0
    im_data[np.isnan(im_data)] = 0
    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
    elif len(im_data.shape) == 2:
        im_data = np.array([im_data])
        im_bands, im_height, im_width = im_data.shape
        
    #创建文件
    driver = gdal.GetDriverByName("GTiff")
    dataset = driver.Create(path, int(im_width), int(im_height), int(im_bands), datatype)
    if(dataset!= None):
        dataset.SetGeoTransform(im_geotrans) #写入仿射变换参数
        dataset.SetProjection(im_proj) #写入投影
    for i in range(im_bands):
        dataset.GetRasterBand(i + 1).WriteArray(im_data[i])
    del dataset

if __name__ == '__main__':
    fileName = r'F:\package\xnd\index\sy_index_result.tif'
    path = r'F:\package\xnd\index\sy_index_result_pro.tif'
    width, height, bands, data, geotrans, proj = readTif(fileName)
    writeTiff(data,geotrans, proj, path)
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值