GDAL空间数据处理100讲[02]:用GDAL切图/裁剪(GeoTiff格式)

2023-11-03

GDAL空间数据处理100讲[02]:用GDAL切图/裁剪(GeoTiff格式)

作者:胡佳辉 2018年11月14日

 

概述

前面给大家介绍了怎么把GDAL的环境搭建起来,就有朋友迫不及待地问各种开发问题。后续将陆续给大家分享,这一期先介绍怎么用GDAL切图/裁剪(clip),这里采用的是根据指定的矩形框按像素切,其他方式还有根据shp轮廓切等。

 

前置条件:本文基于Ubuntu16桌面版环境,参见:GDAL空间数据处理100讲[01]:GDAL的Python开发环境搭建

 

GeoTiff栅格图像基础知识

要对Tif文件切图,对栅格图像的了解很有必要。GeoTiff是很常见的一种遥感影像数据格式,它是一种栅格数据,这种数据是以像素点矩阵的形式存储的。TIF文件中的空间信息包括投影信息和仿射变换信息。其中,仿射变换(经纬度等)的信息分别为:左上角的坐标(经度和维度)、东西和南北方向的像素分辨率(也就是每个像素点的经纬度偏移量)以及图像的旋转系数(正北方向时为零)。这样,每个像素点的坐标就可以通过它与左上角的偏移量和每个像素的分辨率值计算出来。

 

切图产生的新图的投影信息是不变的,但仿射信息会发生变化,因为左上角的原点可能跟原图不一样了。因此,需要重新计算仿射信息并设置(投影信息也需要设置,但不需要重新计算)。

 

GDAL切图的关键步骤

[1] Tif文件的读取;

[2] 根据Tif文件中的波段数量,读取相应的波段(Band)。有些Tif可能只包含一个波段,但更常见的包含RGB或者RGBN,分别代表Red、Green、Blue和Near Infrared(近红外)。本文的tif样例文件为RGB文件,共三个通道;

[3] 确定要裁剪的图的起始点和矩形框的大小,并读取相应的数据;

[4] 获取创建文件的驱动并创建裁剪后的新目标文件;

[5] 计算新图的仿射信息,并设置投影和仿射信息;

[6] 将提取出来的数据写入新文件并刷新缓存到磁盘;

[7] 释放文件句柄资源;

 

其他可选处理可能包括计算统计信息以及构建影像金字塔等。

 

切图源码

参见github链接:https://github.com/dennishucd/gdal100/blob/master/02/gdal_clip.py

 

说明:本源码中的样例影像源自哨兵二号成都兴隆湖的影像.

 

本文原发于"卫星遥感大数据"公众号,欢迎关注!如有兴趣,欢迎加入"卫星遥感大数据"QQ群(877631590)或者加我微信(cddennishu)进"卫星遥感大数据"微信群。

 

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

GDAL空间数据处理100讲[02]:用GDAL切图/裁剪(GeoTiff格式) 的相关文章

  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 用缺失的日期填充其他列 Nan Pandas DataFrame

    我实际上是从几个 Excel 文件中提取数据来监控我的每日卡路里摄入量 我设法使用列表理解来生成日期 我尝试使用合并或连接 但它不起作用 ValueError 您正在尝试合并对象和 float64 列 date list 2021 05 2
  • 为什么删除临时文件时出现WindowsError?

    我创建了一个临时文件 向创建的文件添加了一些数据 已保存 然后尝试将其删除 但我越来越WindowsError 编辑后我已关闭该文件 如何检查哪个其他进程正在访问该文件 C Documents and Settings Administra
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • Python - 来自 .进口

    我第一次尝试图书馆 我注意到解决图书馆内导入问题的最简单方法是使用如下结构 from import x from some module import y 我觉得这件事有些 糟糕 也许只是因为我不记得经常看到它 尽管公平地说我还没有深入研究
  • Python 2.7 中的断言对我来说不起作用示例assertIn

    我的 Mac 上安装了 python 2 7 通过在终端中运行 python v 进行验证 当我尝试使用任何新的 2 7 断言方法时 我收到 AtributeError 我看过http docs python org 2 library u
  • pyspark 数据框中的自定义排序

    是否有推荐的方法在 pyspark 中实现分类数据的自定义排序 我理想地寻找 pandas 分类数据类型提供的功能 因此 给定一个数据集Speed列 可能的选项是 Super Fast Fast Medium Slow 我想实现适合上下文的
  • Python 中的流式传输管道

    我正在尝试使用 Python 将 vmstat 的输出转换为 CSV 文件 因此我使用类似的方法转换为 CSV 并将日期和时间添加为列 vmstat 5 python myscript py gt gt vmstat log 我遇到的问题是
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • 搜索多个字段

    我想我没有正确理解 django haystack 我有一个包含多个字段的数据模型 我希望搜索其中两个字段 class UserProfile models Model user models ForeignKey User unique
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • pytest:同一接口的不同实现的可重用测试

    想象一下我已经实现了一个名为的实用程序 可能是一个类 Bar在一个模块中foo 并为其编写了以下测试 测试 foo py from foo import Bar as Implementation from pytest import ma
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • 用 python 编写的数学语法检查器

    我需要的只是使用 python 检查字符串是否是有效的数学表达式 为了简单起见 假设我只需要 运算符 也作为一元 带有数字和嵌套括号 为了完整性 我还添加了简单的变量名称 所以我可以这样测试 test 3 2 1 valid test 3
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • Jython 和 SAX 解析器:允许的实体不超过 64000 个?

    我做了一个简单的测试xml saxJython 中的解析器在处理大型 XML 文件 800 MB 时遇到以下错误 Traceback most recent call last File src project xmltools py li
  • Python SSL X509:KEY_VALUES_MISMATCH

    Python HTTPS server from http server import HTTPServer SimpleHTTPRequestHandler import ssl https stackoverflow com a 408
  • Django Admin 中的反向内联

    我有以下 2 个型号 现在我需要将模型 A 内联到模型 B 的页面上 模型 py class A models Model name models CharField max length 50 class B models Model n
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk

随机推荐

  • 一文带你了解如何编写测试用例?【0基础也能看懂】

    我是小濠 一个快要秃头的测试人 欢迎点赞 收藏 留言 如有错误敬请指正 我收集了一些软件测试资料 关注我公众号 程序员小濠 免费领取 送给大家一句话 世界的美丽 来源于你的努力 因此 在介绍如何编写测试用例之前 先看一个软件系统登录功能的测
  • 查看WIN10密钥备忘

    查看WIN10密钥备忘 1 我们按下 Win R 打开运行或者开始菜单右键选择运行 输入 regedit 点击确定打开注册表编辑器 2 依次展开 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows N
  • 【Android -- 相机】调用摄像头拍照 & 选择照片

    效果图 现在很多应用中都会要求用户上传一张图片来作为头像 首先我在这接收使用相机拍照和在相册中选择图片 接下来先上效果图 实现代码 1 布局文件
  • Android OpenGL ES 3.0 开发 :3D实例化(Instancing 3D)

    1 OpenGL ES 实例化 Instancing OpenGL ES 实例化 Instancing 是一种只调用一次渲染函数就能绘制出很多物体的技术 可以实现将数据一次性发送给 GPU 告诉 OpenGL ES 使用一个绘制函数 将这些
  • Leetcode 82. Remove Duplicates from Sorted List II

    题目描述 Given a sorted linked list delete all nodes that have duplicate numbers leaving only distinct numbers from the orig
  • 数据库设计步骤(超级详细)

    数据库设计 我们先来看这样一个问题 假如遇到下面这样的设计需求 我们如何完成数据库的设计呢 设计需求 假设商品经销商有基本实体集 供应商Vendors 产品目录Products 顾客信息Customers和顾客订单Orders 各个实体的属
  • java.lang.object 下载_Java总结篇系列:java.lang.Object

    从本篇开始 将对Java中各知识点进行一次具体总结 以便对以往的Java知识进行一次回顾 同时在总结的过程中加深对Java的理解 Java作为一个庞大的知识体系 涉及到的知识点繁多 本文将从Java中最基本的类java lang Objec
  • QT-信号和槽函数

    信号和槽函数 signals slots Qt5作为c 的GUI开发类库 其最具代表性的特点就是信号和槽 类似于中断和中断处理函数调用的回调 callback 函数 但具体实现在应用层 并且使用起来较后者更为方便 作用 用于对象间的通信 实
  • 计算机网络学习—iptables的SNAT和DNAT

    iptables的SNAT和DNAT iptables SNAT SNAT策略概述 SNAT策略的典型应用环境 局域网主机共享单个公网IP地址接入internet SNAT策略的原理 源地址转换 Source Network Address
  • [前端系列第3弹]JS入门教程:从零开始学习JavaScript

    本文将带领大家 从零开始学习JavaScript fighting 目录 一 JavaScript简介 二 变量和数据类型 三 注释和分号 四 算术运算符 五 表达式和语句 六 代码块和作用域 七 函数 最重要 一 JavaScript简介
  • ES索引的备份与恢复

    ES索引的备份与恢复 1 索引的备份与恢复 步骤首先是进行创建备份仓库这里选择如下 usr local backup 在es的yml下进行添加配置 path repo usr local backup 然后在kibana中执行 PUT sn
  • 战略方法论

    父文章 人人都是战略家 2018年注册会计师公司战略与风险考点 swot分析 知识点 注册会计师 SWOT分析 一 基本原理 所谓SWOT分析 即基于内外部竞争环境和竞争条件下的态势分析 就是将与研究对象密切相关的各种主要内部优势 劣势和外
  • BRDF

    一 BRDF简介 BRDF表示的是双向反射分布函数 Bidirectional Reflectance Distribution Function 它描述了光线如何在物体表面进行反射 可以用来描述材质属性 BRDF的输入参数是入射光的的仰角
  • CSRF漏洞原理/防御

    CSRF 跨站请求伪造 原理 CSRF是指攻击者利用已登录的用户身份 伪造用户请求 从而执行非法操作 触发点 检测 CSRF常出现在留言 论坛 后台管理 用户中心等功能 CSRF有三个前提 第一 目标用户处于登录状态 第二 后端代码逻辑不严
  • 在matlab中计算距离矩阵

    matlab中自带的计算距离矩阵的函数有两个pdist和pdist2 前者计算一个向量自身的距离矩阵 后者计算两个向量之间的距离矩阵 基本调用形式如下 D pdist X D pdist2 X Y 这两个函数都提供多种距离度量形式 非常方便
  • html之select标签

    基本用法
  • js实现图片压缩上传

    javascript 处理图片压缩 剪切 模糊和上传 最近在研究H5前端图片处理相关技术 方向有图片压缩 裁切 旋转 模糊等 现在已经整理成对应的demo 上传至github 一 js脚本实现图片压缩 CompressImageUtiles
  • JVM(8)--垃圾回收算法与垃圾回收器

    一 概述 深入理解java虚拟机中写到 Java与C 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙 墙外面的人想进去 墙里面的人却想出来 Java在动态内存分配与回收上已经是自动化的 但是当需要排查各种内存溢出 内存泄漏问题时 当垃圾
  • 字符串变形 C++

    目录 题目描述 思路分析 AC代码 题目描述 对于一个长度为 n 字符串 我们需要对它做一些变形 首先这个字符串中包含着一些空格 就像 Hello World 一样 然后我们要做的是把这个字符串中由空格隔开的单词反序 同时反转每个字符的大小
  • GDAL空间数据处理100讲[02]:用GDAL切图/裁剪(GeoTiff格式)

    GDAL空间数据处理100讲 02 用GDAL切图 裁剪 GeoTiff格式 作者 胡佳辉 2018年11月14日 概述 前面给大家介绍了怎么把GDAL的环境搭建起来 就有朋友迫不及待地问各种开发问题 后续将陆续给大家分享 这一期先介绍怎么