教程:使用Python裁剪TIF影像为多个自定义大小的小块(分割栅格)

news2024/11/29 20:43:16

教程:使用Python裁剪TIF影像为多个自定义大小的小块(分割栅格)

随着遥感技术的不断发展,影像数据的处理和分析在地理信息系统(GIS)和遥感领域显得尤为重要。在实际项目中,处理大规模的TIF影像数据往往需要对影像进行裁剪,以便后续分析和处理。本文将通过一段Python代码,详细讲解如何使用滑动窗口方法裁剪TIF影像。

一、引言

在遥感图像处理中,TIF格式的影像数据非常常见。这些影像数据通常包含多个波段,并且其大小可能非常庞大,直接使用和处理会消耗大量计算资源。为了更有效地处理这些数据,我们可以使用裁剪技术将大尺寸的影像分割成更小的块。

本文将展示一段Python脚本,利用滑动窗口裁剪方法将大幅TIF影像分割成多个自定义大小的小块,便于后续的分析与处理。
在这里插入图片描述

影像为2023年4月获取的北京平谷区的一景多光谱影像。在这篇文章中,我们的任务是将上述影像裁剪成多个540x540大小的TIF影像,以便后续使用和分析。
在这里插入图片描述

二、Python脚本的功能概述

该脚本的主要功能是:

  1. 读取TIF影像:通过GDAL库读取影像及其地理信息。
  2. 滑动窗口裁剪:将影像按照指定的窗口大小和重叠率进行裁剪。
  3. 保存裁剪后的影像:将裁剪后的影像保存为新的TIF文件,同时保留其地理坐标和投影信息。

三、关键代码解析

接下来,我们将详细解析代码的关键部分,帮助您更好地理解每个功能模块的实现。

3.1 导入必要的库

import os
import sys
try:
    import gdal
except:
    from osgeo import gdal
import numpy as np
from PIL import Image
  • ossys:用于文件路径操作和系统级操作。
  • gdal:用于读取和处理地理空间数据。
  • numpy:用于数值计算和数组操作。
  • PIL:用于处理图像。

3.2 保存TIF文件的函数

首先,我们定义了一个函数writeTiff,用于将裁剪后的影像保存为新的TIF文件。

def writeTiff(im_data, im_geotrans, im_proj, path):
    datatype = gdal.GDT_Float32
    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[0,i])
    del dataset
  • im_data:裁剪后的影像数据。
  • im_geotrans:地理坐标信息。
  • im_proj:投影信息。
  • path:保存路径。

3.3 坐标转换函数

在裁剪影像时,我们需要保持地理坐标信息。CoordTransf函数用于将像素坐标转换为地理坐标。

def CoordTransf(Xpixel, Ypixel, GeoTransform):
    XGeo = GeoTransform[0] + GeoTransform[1] * Xpixel + Ypixel * GeoTransform[2]
    YGeo = GeoTransform[3] + GeoTransform[4] * Xpixel + Ypixel * GeoTransform[5]
    return XGeo, YGeo
  • XpixelYpixel:像素坐标。
  • GeoTransform:仿射变换参数。

3.4 滑动窗口裁剪TIF影像

核心函数TifCrop用于将影像按指定尺寸和重叠率进行裁剪。
在这个函数中,我们首先读取影像的尺寸、波段数和地理信息。接着,我们根据裁剪尺寸和重叠率计算行和列的分块数目。随后,使用滑动窗口进行裁剪,并保存裁剪后的影像。

3.5 裁剪与保存影像

完整代码及无偿获取请查看公众号:Python与遥感
在这里插入图片描述

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

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

相关文章

【原创】java+swing+mysql房屋租赁管理系统设计与实现

个人主页:程序员杨工 个人简介:从事软件开发多年,前后端均有涉猎,具有丰富的开发经验 博客内容:全栈开发,分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片,希望和大家…

进程的退出概念

进程退出 缺页中断(补充)页表中的权限位进程退出异常exit 缺页中断(补充) 之前我们了解了页表相关的知识,现在问大家一个问题,用new和malloc开辟内存的时候是虚拟内存还是物理内存呢? 答案是虚…

谷粒商城实战笔记-231-商城业务-认证服务-单点登录简介

文章目录 一,跨域名共享登录1,父子域名共享登录2,跨域名登录 二,单点登录-SSO单点登录的必要性单点登录的原理 三,XXL-SSO,开源的单点登录解决方案 一,跨域名共享登录 1,父子域名共…

OSPF-基础多区域实验

1.ENSP下载 阿里云盘分享 ⭐/*无需密钥 免费下载 安装不成功,可关注并私信博主*/ 2.OSPF的基础需求和规则 实验规则: 1.接口地址→XY.XY.XY.R /24 X:两者之间最小的 Y:两者之间最大的 R:谁的接口就是谁的编号 以R1和R2之间的连接为例&#xff0…

中国植物性状数据库

中国植物性状的研究主要集中在植物的生理结构和功能,‌以及它们对环境的适应性上。‌中国植物性状的多样性体现在多个方面,‌包括植物的生理结构、‌生长习性、‌以及对环境的适应性等。 中国植物性状数据库,包含了来自140个样点的1529种植物…

Leetcode876. 链表的中间结点(双指针)

题目描述 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例: 示例 1: 输入:head [1,2,3,4,5] 输出:[3,4,5] 解释:链表只有一个中…

游泳耳机哪个品牌好?四大热门爆款游泳耳机实测体验速览!

游泳耳机作为水下运动的伴侣,有着不少喜爱的人群。然而,也有一部分人对其保持距离,原因往往是担心水下耳机进水损坏。但只要我们避开那些缺乏专业技术实力的产品,就能享受水下音乐带来的无限乐趣。作为一名资深音乐爱好者和游泳教…

减震组装对于哪些无人机是必不可少的!你知道吗?

高精度无人机 对于需要搭载高精度传感器或进行高精度测量的无人机,如测绘无人机、环境监测无人机等,减震组装是必不可少的。这些无人机需要确保在飞行过程中传感器数据的准确性和稳定性,因此必须采用有效的减震措施。 载重无人机 载重无人…

个人收藏个性化、实用性、可玩性在线网站持续更新,与君共享

1.https://handraw.top/ 支持中文手绘效果的白板工具,比较怀旧复古风格 界面简单风 2.https://app.diagrams.net 流程图、UML图、网络图、组织结构图、思维导图等,比较专业 可导出图片 PDF HTLM等各种格式 3.https://www.processon.com 主要用于生成…

杜占朋人物风采

杜占朋,衡水名校校长,一位荣获全国杰出青年称号的杰出教育家,同时也是全国范围内备受尊崇的红色基因传承者。他以其卓越的学术成就、丰富的实践经验以及不懈的教育创新精神,成为了当代教育领域的璀璨明星。他身兼数职,…

一文速通 Vue 基础

1、Vue 概述 官方文档中文:https://staging-cn.vuejs.org/ 英文:Vue.js - The Progressive JavaScript Framework | Vue.js 1.1、什么是 MVVM MVVM(Model-View-ViewModel)是一种软件设计模式,由微软WPF&#xff08…

C语言中的联合体和枚举类型

文章目录 🍊联合体🍊枚举类型 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊联合体 1、概述   联合体该结构体的定义形式类似,但是它是所有的成…

信息安全保证人员CISAW:安全集成

信息安全保障人员认证(CISAW)在安全集成领域的认证,主要针对申请者在信息系统安全集成的知识和理论以及项目实施中的综合应用能力进行全面评估。 这一认证特别强调对申请者在安全集成方面的知识深度和利用这些知识分析、解决实际问题的能力的评价。 此外&#xff…

python初级爬虫实战:我是怎么用python下载音乐的

今天分享的内容是如何使用python下载歌曲和歌词信息,文章涉及内容主要为了帮助大家学习python技能,请大家合规合理使用。 如果你正在学习Python爬虫,但是找不到方向的话可以试试我这一份学习方法和籽料呀!点击 领取(不…

北斗对我们普通人的生活有什么影响?

自北斗卫星导航系统(BDS)全面覆盖全球以来,北斗导航在我们日常生活中的重要性与日俱增。本文将详细探讨北斗导航系统如何从方方面面改变我们普通人的生活。 1. 精准定位:现代生活的基石北斗系统最显而易见的影响体现在精准定位和导…

Linux:进程的概念,进程相关函数

一、进程的概念 1.进程 进程是系统进行资源分配和调度的一个独立单元,它是操作系统结构的基础。进程是程序的一次执行过程,包含了程序代码、当前活动、系统资源(如CPU、内存、文件等)的使用情况等信息。每个进程都有自己独立的内…

2024最强CSS基础知识大全(含代码)

CSS 什么是 CSS CSS(Cascading Style Sheets) 指层叠样式表,样式定义如何显示 HTML 的样式,样式通常存储在样式表中,把样式添加到 HTML5 中,是为了解决内容与表现分离的问题,外部样式表可以极大提高工作效率&#xf…

三勾点餐系统|支持多端发布,方便二次开发

版本号1.7更新日志 新增:腾讯地图key设置(更新后请设置key) 新增:支付宝小程序登录和支付 新增:前端点餐时选择门店 新增:前端点餐页面优惠活动显示 新增:H5修改手机号 新增:H…

conda不是内部或外部命令

conda不是内部或外部命令 是anaconda环境变量没有添加到系统环境变量 解决办法 找到anaconda安装目录,添加以下系统环境变量 注意事项 pycharm在选择anaconda创建虚拟环境时,使用的是_conda.exe

2000-2023年逐年最大NDVI数据集(500m)

植被指数(NDVI, Normalized Difference Vegetation Index)可以准确反映地表植被覆盖状况。目前,NDVI时序数据已经在各尺度区域的植被动态变化监测、土地利用/覆被变化检测、宏观植被覆盖分类和净初级生产力估算等研究中得到了广泛的应用。 中…