利用python中GDAL读写tif文件

2023-11-18

废话不多说,直接上代码

读取tif:

from osgeo import gdal
import sys
def Read_img2array(img_file_path):
    """
    读取栅格数据,将其转换成对应数组
    img_file_path: 栅格数据路径
    :return: 返回投影,几何信息,和转换后的数组
    """
    dataset = gdal.Open(img_file_path)  # 读取栅格数据
    print('处理图像波段数总共有:', dataset.RasterCount)
    # 判断是否读取到数据
    if dataset is None:
        print('Unable to open *.tif')
        sys.exit(1)  # 退出
    projection = dataset.GetProjection()  # 投影
    geotrans = dataset.GetGeoTransform()  # 几何信息
    im_width = dataset.RasterXSize #栅格矩阵的列数
    im_height = dataset.RasterYSize #栅格矩阵的行数
    im_bands = dataset.RasterCount #波段数
   # 直接读取dataset
    img_array = dataset.ReadAsArray()
    return im_width,im_height,im_bands,projection, geotrans, img_array

数组写入tif:

import numpy as np
from osgeo import gdal
#tiff_file为tif,im_data为数组
def Write_img2array(tiff_file, im_proj, im_geotrans, data_array):
    if 'int8' in data_array.dtype.name:
        datatype = gdal.GDT_Int16
    elif 'int16' in data_array.dtype.name:
        datatype = gdal.GDT_Int16
    else:
        datatype = gdal.GDT_Float32

    if len(data_array.shape) == 3:
        im_bands, im_height, im_width = data_array.shape
    else:
        im_bands, (im_height, im_width) = 1,data_array.shape 

    driver = gdal.GetDriverByName("GTiff")
    dataset = driver.Create(tiff_file, im_width, im_height, im_bands, datatype)

    dataset.SetGeoTransform(im_geotrans)
    dataset.SetProjection(im_proj)

    if im_bands == 1:
        dataset.GetRasterBand(1).WriteArray(data_array)
    else:
        for i in range(im_bands):
            dataset.GetRasterBand(i+1).WriteArray(data_array[i])

    del dataset

实用的话给个赞和关注吧~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用python中GDAL读写tif文件 的相关文章

随机推荐

  • 分析告警流量

    关键指标分析 事件量 原始告警量 主告警量 自动去重 规则压缩后告警量 压缩比 压缩比计算公式 1 主告警量 事件量 100 MTTA 告警平均响应or认领时长 MTTR 告警平均恢复or关闭时长 事件压缩分析 按天统计事件量 所有告警 主
  • 电商数据分析---RFM用户画像

    电商数据分析 一 数据描述 数据下载 订单顺序编号 订单号 用户名 商品编号 订单金额 付款金额 二 分析角度 1 整体角度 探索每个月有效的订单 以及销售额 2 个人角度 统计第一次购买的数量 以及最新时间购买的人数 3 用户画像 使用R
  • Windows API一日一练(13)TranslateMessage函数

    Windows API一日一练 13 TranslateMessage函数 分类 Direct3D 2007 07 23 08 41 7881人阅读 评论 5 收藏 举报 windows api winapi null 工作 Transla
  • linux基础命令之zip

    zip用来解压缩文件或对文件进行打包 语法 zip 选项 参数 zip压缩包 指定要创建的zip压缩包 文件列表 指定要压缩的文件列表 通常用法 zip r aaa zip aaa 压缩目录 zip r aaa zip aaa 压缩文件 选
  • 服务器来电后自动开机

    实战 xfs文件系统的备份和恢复 XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据 xfsdump 按inode顺序备份一个XFS文件系统 与传统的UNIX文件系统不同 XFS不需要在dump前被卸
  • Mac M1(arm 系列芯片)如何安装 Chromium

    最近写个脚本用到 puppeteer 然后安装 Chromium 出现一点问题 这里记录一下解决方案 Puppeteer 自动安装失败 在 Puppeteer 安装时会自动安装 Chromium 然而却总是报错 502 导致下载失败 直接下
  • [Unity] Unity 插件Behavior Designer行为树使用

    Unity 插件Behavior Designer行为树使用 1 创建行为树 在Tools gt Behavior Designer gt Editor中打开行为树编辑编辑窗口 选择一个游戏物体 在Behavior Designer中右键A
  • open3d-点云读写和显示

    目录 一 点云读取 二 点云写入 二 点云显示 三 open3d支持如下点云文件类型 四 代码及结果示例 一 点云读取 read point cloud filename format auto remove nan points True
  • 人工智能专家:AI并不像你想象的那么先进

    2019 10 28 14 44 32 神译局是36氪旗下编译团队 关注科技 商业 职场 生活等领域 重点介绍国外的新技术 新观点 新风向 编者按 近些年 很多人工智能产品已经投入应用 走进人们的生活 人工智能迅猛的发展速度很难不引人注意
  • OSI七层模型及各层功能概述

    目录 1 OSI的基本概念及原则 2 OSI七层模型各层功能概述 3 OSI七层模型举例 4 OSI七层模型总结 1 OSI的基本概念及原则 OSI是Open System Interconnect的缩写 意为开放式系统互联 其各个层次的划
  • pandas读取SQL数据库到DataFrame

    在查询sql数据库时可以直接将数据读取到dataframe中 这样直接解决读取了大量含BLOB的记录后出现BLOB数据无效的问题 如LOB variable no longer valid after subsequent fetch 对这
  • python绘制饼图双层_Python通过matplotlib画双层饼图及环形图简单示例

    1 饼图 pie 即在一个圆圈内分成几块 显示不同数据系列的占比大小 这也是我们在日常数据的图形展示中最常用的图形之一 在python中常用matplotlib的pie来绘制 基本命令如下所示 python3 X版本 vals 1 2 3
  • 刷脸支付促使传统行业迎来了数字化变革契机

    人脸识别的时候可以进行性别识别 性别识别是利用计算机视觉来辨别和分析图像中的人脸性别属性 多年来 人脸性别分类因其在人类身份认证 人机接口 视频检索以及机器人视觉中的潜在应用而备受关注 性别分类是一个复杂的大规模二次模式分类问题 分类器将数
  • Flutter安装的常见错误

    1 android studio not installed flutter config android studio dir E Android AndroidStudio 指定android studio的目录 2 flutter d
  • Pytorch Windows C++调用(libtorch) Cmake编译 分别在python和C++中验证一致

    0 下载准备 具备vs2015 cmake libtorch libtorch https pytorch org get started locally 先用的release版本测试了一下 把lib中的dll放在bin中 然后加到环境变量
  • 云服务器网卡mac地址修改,服务器mac地址修改教程

    服务器mac地址修改教程 内容精选 换一换 您可以根据以下步骤使用管理控制台创建一个裸金属服务器实例 本教程以部署一台Web应用服务器为场景 旨在帮助您快速创建一个实例 因此不会涵盖所有可能的选项 详细的创建信息和参数说明 请参见创建裸金属
  • NGUI的学习

    一 导入和创建UIROOT 1 导入Ngui 导入哪个都可以 推荐第一个 2点击NGUI Options Reset prefabs ToolBar 插入背景prefab创建了UIROOT和摄像机及背景 二 UI Label 的使用 1 选
  • (三)kityMinder如何实现节点间的跳转

    本文章系列将会记录在做kityminder二次开发过程中 遇到的问题以及解决方法 有同事反馈需要脑图能够支持类似于xmind中的节点中的跳转的功能 但是实际上节点目前支持的链接方式只是支持跳转到外部的链接上去而已 并不能够支持节点间跳转的功
  • 微信支付——微信退款实战教程(Java版)

    微信支付之微信申请退款实战 Java版 微信支付业务场景 一 注意事项 二 微信支付退款案例 1 微信退款案例 二 微信支付官方说明 总结 微信支付业务场景 当交易发生之后一年内 由于买家或者卖家的原因需要退款时 卖家可以通过退款接口将支付
  • 利用python中GDAL读写tif文件

    废话不多说 直接上代码 读取tif from osgeo import gdal import sys def Read img2array img file path 读取栅格数据 将其转换成对应数组 img file path 栅格数据