【GDAL-Python】1-在Python中使用GDAL读写栅格文件

文章目录

    • 1-概要
    • 2.代码实现

1-概要

提示:本教程介绍如何使用 Python 中的 GDAL 库将栅格数据读取为数组并将数组另存为GeoTiff 文件

视频地址:B站对应教程

目标:
(1)读写GeoTiff影像;
(2)正确显示单波段影像;
(3)学会制作掩膜影像用于提取影像中有用部分

2.代码实现

实现主要功能如下

  1. Geotiff文件读取并显示
  2. 数据操作-制作掩膜;
  3. 输出影像

(1)代码:Geotiff文件读取并显示

# -*- coding:utf-8 -*-
from osgeo import gdal
import numpy as np
import matplotlib.pyplot as plt
# 1.加载并显示影像 
ds = gdal.Open("dem.tif")# gdal.Dataset
gt = ds.GetGeoTransform()#地理变换:图像到地理坐标的变换矩阵
proj = ds.GetProjection()#投影信息band = ds.GetRasterBand(1)#查询波段数:ds.RasterCount
array = band.ReadAsArray()plt.figure()
plt.imshow(array)

(2)代码:数据操作-制作掩膜

# -*- coding:utf-8 -*-
from osgeo import gdal
import numpy as np
import matplotlib.pyplot as plt
# 1.加载并显示影像 
ds = gdal.Open("dem.tif")# gdal.Dataset
gt = ds.GetGeoTransform()#地理变换:图像到地理坐标的变换矩阵
proj = ds.GetProjection()#投影信息band = ds.GetRasterBand(1)#查询波段数:ds.RasterCount
array = band.ReadAsArray()# 2.数据操作:过滤高于数据平均值的值,
#高于的赋值为1,否则为0,组成了掩膜图像binmask
binmask = np.where((array  >= np.mean(array)),1,0)#制作二进制掩膜,用于提取影像
plt.figure()
plt.imshow(binmask)

(3)代码:输出影像

# -*- coding:utf-8 -*-
from osgeo import gdal
import numpy as np
import matplotlib.pyplot as plt
# 1.加载并显示影像 
ds = gdal.Open("dem.tif")# gdal.Dataset
gt = ds.GetGeoTransform()#地理变换:图像到地理坐标的变换矩阵
proj = ds.GetProjection()#投影信息band = ds.GetRasterBand(1)#查询波段数:ds.RasterCount
array = band.ReadAsArray()plt.figure()
plt.imshow(array)# 2.数据操作:过滤高于数据平均值的值,高于赋值为1,否则为0
binmask = np.where((array  >= np.mean(array)),1,0)#制作二进制掩膜,用于提取影像
plt.figure()
plt.imshow(binmask)#3.输出影像
driver = gdal.GetDriverByName("GTiff")
driver.Register()
outds = driver.Create("binmask.tif", xsize = binmask.shape[1],ysize = binmask.shape[0], bands = 1, eType = gdal.GDT_Int16)
outds.SetGeoTransform(gt)
outds.SetProjection(proj)
outband = outds.GetRasterBand(1)
outband.WriteArray(binmask)
outband.SetNoDataValue(np.nan)
outband.FlushCache()# 4.关闭数据和波段
outband = None
outds = No

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos 9 安装mysql 到系统指定目录

在CentOS 9上安装MySQL并将其安装到系统指定目录的步骤如下: 首先,确认已经正确配置了CentOS 9的网络连接。 打开终端并使用root用户登录。 添加MySQL Yum存储库。执行以下命令: dnf install -y https://dev.mysql.com/get/mysql80-communi…

深入理解Java内存模型(JMM)

Java内存模型(JMM)是每一位Java开发者必须了解的核心知识之一,特别是对于涉足并发编程的开发者来说,JMM是保证多线程程序正确执行的基石。JMM定义了线程与主内存之间的抽象关系,规定了如何通过内存来进行线程间的通信&…

Antd:在文本框中展示格式化JSON

要想将对象转换为格式化 JSON 展示在文本框中,需要用到 JSON.stringify JSON.stringify 方法接受三个参数: value:必需,一个 JavaScript 值(通常为对象或数组)要转换为 JSON 字符串。replacer&#xff1a…

MySql 安装,小白也可以学会成功安装的保姆级教程

MySql 安装 文章目录 MySql 安装1.Mysql下载1.1 访问下载链接1.2 选择合适版本1.3 下载安装包 2.MySql安装3.安装成功检测验证3.1 mysql自带控制台验证3.2 win系统控制台进入验证 4. mysql 配置path5. navicat 连接 mysql 1.Mysql下载 1.1 访问下载链接 MySQL Downloads 这里…

常用的权限模型介绍

概述 权限模型是一种用于定义和管理系统资源访问权限的规则集合。它规定了谁可以访问系统资源,以及在何种条件下可以访问。 常用的权限模型 DAC(Discretionary Access Control):自主访问控制,是基于用户身份或组织属…

【自由看门狗配置及计算】

一、看门狗使用场景 看门狗是一个硬件计时电路,用来监测由软件故障导致的系统故障。 片上有两个看门狗定时器外设,自由看门狗定时器(FWDGT也叫独立看门狗)和窗口看门狗定时器(WWDGT)。 当嵌入式程序在运…

conda 创建、激活、退出、删除虚拟环境

一、conda 本地环境常用操作 #获取版本号 conda --version 或 conda -V #检查更新当前conda conda update conda #查看当前存在哪些虚拟环境 conda env list 或 conda info -e #查看--安装--更新--删除包 conda list: conda search package_name# 查询包 cond…

Centos 更换yum国内源的命令 -- yum更新速度太慢问题

【Linux】yum | 更新为国内源 | 删除源 | 删除repo | CentOS7_linux如何删除repo文件-CSDN博客

Linux程序调试优化(1)——内存占用详解及优化思路

文章目录 1.free查看总体的内存占用2./proc/$PID/status 查看某进程状态 linux开发最重要的两个参数,分别是内存以及CPU使用率,若内存出现严重不足,则在需要使用内存时,可能出现申请不到的情况,导致 OOM,L…

不出天府锋巢直播产业基地,即可激活电商直播产业、产教融合及人才培训服务

天府锋巢直播产业基地打造直播产业产教融合及人才培训服务新模式,携手政府、企业、高校,促进直播产业与创新人才双向奔赴,推进教学与实战深度融合,推动实习与就业无缝衔接。 各方资讯一应俱全 直播产业产教融合及人才培训服务全套…

ArrayList扩容

在Java中,ArrayList是一个动态数组,它允许在运行时改变其大小。当向ArrayList添加元素并且当前数组容量不足以容纳新元素时,ArrayList会自动扩容。 扩容原理 初始容量:当创建一个新的ArrayList时,可以指定一个初始容量…

DFS专题:力扣岛屿问题(持续更新)

DFS专题:力扣岛屿问题 开篇 每次做到DFS相关的题目都是直接跳过。蓝桥杯过后痛定思痛,好好学习一下DFS和BFS。先从DFS开始吧。 参考题解:nettee:岛屿类问题的通用解法、DFS 遍历框架 一、岛屿数量 题目链接: 200.岛屿数量 题…

x86_64/amd64和arm64区别

1.概况 x86_64(也称为AMD64或x64)和ARM64是两种不同的处理器架构,它们在设计理念、应用场景和性能特点上有所区别。 2.设计理念 x86_64架构起源于Intel的x86架构,它是对原始32位x86架构的扩展,增加了对64位计算的支…

Vue3学习05 一些API

Vue3-API 其它 API【shallowRef 与 shallowReactive 】shallowRefshallowReactive总结 【readonly 与 shallowReadonly】readonlyshallowReadonly 【toRaw 与 markRaw】toRawmarkRaw 【customRef】 Vue3新组件【Teleport】【Suspense】【全局API转移到应用对象】【其他】 其它 …

webuploader后端开发要点

百度fex团队的webuploader是一个很方便的web页面文件上传轮子,可以很方便地集成到前端html和js里,当然了,后端需要咱们自己开发实现。比较遗憾的是webuploader现在已经从百度的fex主页移除了,该项目可能已经不再维护了。 关于后端…

java小作业(9)----用函数实现斐波那契数列(第二遍)

代码&#xff1a; public class Main {public static void main(String[] args) {int n 20; // 你可以更改这个值来计算和输出前n个斐波那契数for (int i 0; i < n; i) {System.out.print(fibonacci(i) " ");}}public static int fibonacci(int n) {if (n <…

BackTrader 中文文档(一)

原文&#xff1a;www.backtrader.com/ 主页 欢迎来到 backtrader&#xff01; 原文&#xff1a;www.backtrader.com/ 一个功能丰富的 Python 框架&#xff0c;用于回测和交易 backtrader允许您专注于编写可重复使用的交易策略、指标和分析器&#xff0c;而不必花时间构建基础…

Android T多屏多显——应用双屏间拖拽移动功能(更新中)

功能以及显示效果简介 需求&#xff1a;在双屏显示中&#xff0c;把启动的应用从其中一个屏幕中移动到另一个屏幕中。 操作&#xff1a;通过双指按压应用使其移动&#xff0c;如果移动的距离过小&#xff0c;我们就不移动到另一屏幕&#xff0c;否则移动到另一屏。 功能分析…

振弦式渗压计的安装与防护:在水工建筑物中的关键应用

振弦式渗压计&#xff0c;作为一种高效的孔隙水压力或液体液位测量工具&#xff0c;广泛应用于水工建筑物、基岩内、测压管、钻孔、堤坝、管道和压力容器内。其安装和防护工作至关重要&#xff0c;直接关系到测量数据的准确性和仪器的使用寿命。本文将重点探讨振弦式渗压计在填…

RabbitMQ实战教程(1)

RabbitMQ 一、RabbitMQ介绍 1.1 现存问题 服务调用&#xff1a;两个服务调用时&#xff0c;我们可以通过传统的HTTP方式&#xff0c;让服务A直接去调用服务B的接口&#xff0c;但是这种方式是同步的方式&#xff0c;虽然可以采用SpringBoot提供的Async注解实现异步调用&…