Python遥感开发之批量拼接
Python遥感开发之批量拼接
- 1 遥感图像无交错的批量拼接
- 2 遥感图像有交错的批量拼接
前言:主要借助python实现遥感影像的批量拼接,遥感影像的批量拼接主要分为两种情况,一种是遥感图像无交错,另一种情况是遥感图像相互有交错。具体实现请参考以下代码,如有问题请及时反馈。
1 遥感图像无交错的批量拼接
此方法是各个遥感文件是没有相互交错的拼接,如下图所示。个人可以使用Arcgis进行查看。


实现思路:通过每个遥感数据的经纬度进行拼接下一个遥感数据文件。
import os
from osgeo import gdaldef get_data_list(file_path, out = ""):list1 = [] # 文件的完整路径if os.path.isdir(file_path):fileList = os.listdir(file_path)if out != "":for f in fileList:out_data = out + "\\" + fout_data = out_data.replace(".HDF", "_ndvi.tif")list1.append(out_data)else:for f in fileList:pre_data = file_path + '\\' + f # 文件的完整路径list1.append(pre_data)return list1def get_same_list(image, infile_list):infile_list02 = []for data in infile_list:if image in data:# print("----", data)infile_list02.append(data)return infile_list02def get_same_image_list(infile_list):image_list= []for file in infile_list:filename = file[-31:-23]if filename not in image_list:image_list.append(filename)return list(set(image_list))def pinjie(infile_list,outfile):ds = gdal.Open(infile_list[0])cols = ds.RasterXSizerows = ds.RasterYSizeingeo = ds.GetGeoTransform()proj = ds.GetProjection()minx = ingeo[0]maxy = ingeo[3]maxx = ingeo[0] + ingeo[1] * colsminy = ingeo[3] + ingeo[5] * rowsds = Nonefor file in infile_list[1:]:ds = gdal.Open(file)cols = ds.RasterXSizerows = ds.RasterYSizegeo = ds.GetGeoTransform()minx_ = geo[0]maxy_ = geo[3]maxx_ = geo[0] + geo[1] * colsminy_ = geo[3] + geo[5] * rowsminx = min(minx, minx_)maxy = max(maxy, maxy_)maxx = max(maxx, maxx_)miny = min(miny, miny_)geo = Noneds = Nonenewcols = int((maxx - minx) / abs(ingeo[1]))newrows = int((maxy - miny) / abs(ingeo[5]))driver = gdal.GetDriverByName("GTiff")outds = driver.Create(outfile, newcols, newrows, 1, gdal.GDT_Int16)outgeo = (minx, ingeo[1], 0, maxy, 0, ingeo[5])outds.SetGeoTransform(outgeo)outds.SetProjection(proj)outband = outds.GetRasterBand(1)for file in infile_list:ds = gdal.Open(file)data = ds.ReadAsArray()geo = ds.GetGeoTransform()x = int(abs((geo[0] - minx) / ingeo[1]))y = int(abs((geo[3] - maxy) / ingeo[5]))outband.WriteArray(data, x, y)ds = Noneoutband.FlushCache()pass
if __name__ == '__main__':infile = r"C:\Users\Administrator\Desktop\01提取ndvi"outfile = r"C:\Users\Administrator\Desktop\02拼接"infile_list = get_data_list(infile)image_name_list = get_same_image_list(infile_list)print(image_name_list)for name in image_name_list:print(name)infile_list02 = get_same_list(name, infile_list)pinjie(infile_list02,outfile+"\\"+name+".tif")
2 遥感图像有交错的批量拼接
此方法是各个遥感文件是有相互交错的拼接,如下图所示,具体可以使用Arcgis进行查看。


实现思路:借助gdal中WarpOptions的方法实现,有点类似于镶嵌
import numpy as np
from osgeo import gdal, gdalconst
import osdef RasterMosaic(firstinputfilePath, inputfileList, outputfilePath):inputrasfile1 = gdal.Open(firstinputfilePath, gdal.GA_ReadOnly) # 第一幅影像inputProj1 = inputrasfile1.GetProjection()options = gdal.WarpOptions(srcSRS=inputProj1, dstSRS=inputProj1, format='GTiff')gdal.Warp(outputfilePath, inputfileList, options=options)def get_data_list(file_path, out=""):list1 = [] # 文件的完整路径if os.path.isdir(file_path):fileList = os.listdir(file_path)if out != "":for f in fileList:out_data = out + "\\" + fout_data = out_data.replace(".HDF", "_ndvi.tif")list1.append(out_data)else:for f in fileList:pre_data = file_path + '\\' + f # 文件的完整路径list1.append(pre_data)return list1def get_same_image_list(infile_list):image_list = []for file in infile_list:filename = file[-20:-12]if filename not in image_list:image_list.append(filename)return list(set(image_list))def get_infile(image,infile_list):for data in infile_list:if image in data:return datadef get_same_list(image, infile_list):infile_list02 = []for data in infile_list:if image in data:infile_list02.append(data)return infile_list02if __name__ == '__main__':inputfile_path = r"D:\风云数据\MERSI-II陆表反射比1KM段产品\b1\01原始"outfile = r"D:\风云数据\MERSI-II陆表反射比1KM段产品\b1\02拼接"infile_list = get_data_list(inputfile_path)image_list = get_same_image_list(infile_list)print(image_list)for image in image_list:firstinputfilePath = get_infile(image,infile_list)infile_list02 = get_same_list(image, infile_list)print(image)print(firstinputfilePath)print(infile_list02)RasterMosaic(firstinputfilePath, infile_list02, outfile+"\\"+image+"_b1.tif")print("-------")
相关文章:
Python遥感开发之批量拼接
Python遥感开发之批量拼接 1 遥感图像无交错的批量拼接2 遥感图像有交错的批量拼接 前言:主要借助python实现遥感影像的批量拼接,遥感影像的批量拼接主要分为两种情况,一种是遥感图像无交错,另一种情况是遥感图像相互有交错。具体…...
【bat】批处理脚本大全
目录 1.概述 2.变量 3.运算符 3.2.重定向运算符 3.3.多命名运算符 3.4.管道运算符 4.命令 4.1.基本命令 4.2.参数传递 4.3.查看脚本内容 4.4.注释 4.5.日期和时间 4.6.启动脚本 4.7.调用其他bat 4.8.任务管理 4.8.1.任务列表查看 4.8.2.任务终止 4.9.文件夹 …...
java设计模式学习之【单例模式】
文章目录 引言单例模式简介定义与用途实现方式:饿汉式懒汉式 UML 使用场景优势与劣势单例模式在spring中的应用饿汉式实现懒汉式实现数据库连接示例代码地址 引言 单例模式是一种常用的设计模式,用于确保在一个程序中一个类只有一个实例,并且…...
UWB高精度定位系统项目源码
在现代社会中,精准定位技术对于各行各业都至关重要。为了满足对高精度定位的需求,超宽带(Ultra-Wideband, UWB)技术应运而生。UWB高精度定位系统以其出色的定位精度和多样化的应用领域而备受关注。本文将深入探讨UWB高精度定位系统…...
WPF Live Charts2 自学笔记
文章目录 前言实现效果微软平台的历史问题 WPF 项目搭建Nuget添加额外框架添加项目初始化livecharts配置其它LiveCharts2 案例简单案例Demo示例ViewViewModel GPU渲染 Github地址仓库 前言 LiveChart 是C# 上面很受欢迎的统计图 UI控件。最近在学WPFhalcon开发,想想…...
大小堆的实现(C语言)
目录 前言 一种完全二叉树:堆 堆的概念 堆的性质 建堆的时间复杂度 建堆的空间复杂度: 小堆的实现 必要补充 堆的初始化 堆的销毁 向上调整算法 堆的插入 向下调整算法 堆的删除 获取堆顶元素 获取堆中元素个数 堆的判空 最终代码 He…...
Linux系统之centos7编译安装Python 3.8
前言 CentOS (Community Enterprise Operating System) 是一种基于 Red Hat Enterprise Linux (RHEL) 进行源代码再编译并免费提供给用户的 Linux 操作系统。 CentOS 7 采用了最新的技术和软件包,并提供了强大的功能和稳定性。它适用于各种服务器和工作站应用场景&a…...
Lambda表达式与方法引用
作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 引子 先来看一个案例 …...
二维数组处理(一)
输入整型二维数组a(5行5列),完成如下要求: 输出二维数组a。 将a的第2行和第4行元素对调后,形成新的二维数组a并按行输出,每个元素之间隔一个空格。(行号从0开始计算)。 用对角线(指二维数组左…...
基于JNI实现调用C++ SDK
基于JNI实现调用C SDK 背景分析解决实践 背景 上篇文章总结了几种Java项目调用C/C SDK项目方法,在逐一实践、踩坑后,最终还是敲定采用 JNI 方式进行实现。在文章开始的过程,会先大概讲讲笔者遇到的情况,因为封装方式需要根据实际…...
计算机组成原理笔记——存储器(静态RAM和动态RAM的区别,动态RAM的刷新, ROM……)
■ 随机存取存储器 ■ 1.随机存取存储器:按存储信息的原理不同分为:静态RAM和动态RAM 2.静态RAM(SRAM):用触发器工作原理存储信息,但电源掉电时,存储信息会丢失具有易失性。 3.存储器的基本单元…...
企业计算机服务器locked1勒索病毒数据恢复,locked1勒索病毒解密流程
随着计算机技术的不断发展,越来越多的企业走向数字化办公时代,计算机技术为企业的生产运营提供了有利条件,但也为企业带来了网络安全威胁。在本月,云天数据恢复中心陆续接到很多企业的求助,企业的速达办公软件遭到了lo…...
Session 与 JWT 的对决:谁是身份验证的王者? (下)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
论文笔记:Confidential Assets
Confidential Assets 描述了一种称为“保密交易”的方案,该方案模糊了所有UTXO的金额,同时保持了不创建或销毁硬币的公共可验证性。进一步将此方案扩展到“保密资产”,一种单一的基于区块链的分类帐可以跟踪多种资产类型的方案。将保密交易扩…...
Docker下搭建MySQL主从复制
目录 主从复制简介 主从复制搭建 主从复制简介 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数 据库一般是准实时的业务数据库。 主从复制的作用 做数据的热备。作为后备数据库,主数据库服务器故…...
VBA数据库解决方案第七讲:如何利用Recordset对象打开数据库的数据记录集
《VBA数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…...
内部培训平台的系统 PlayEdu搭建私有化内部培训平台
PlayEdu是由白书科技团队多年经营的线上教育系统,专为企业提供的全新企业培训方案 我们的目标是为更多的企业机构搭建私有化内部培训平台,以满足不断增长的培训需求 通过PlayEdu,企业可以有效地组织和管理培训资源,提供高质量的…...
Elasticsearch 相似度评分模型介绍
前言 Elasticsearch 是基于 Lucene 的世界范围内最流行的全文检索框架,其文档相似度算法包含 TF/IDF 和 BM25,从 ES 5.0开始 BM25 算法已经成为 ES 默认的相似度评分模块。 TF-IDF 与 BM25 的区别 TF-IDF 和 BM25 都是计算文本相似性的常用算法。TF-ID…...
视频生成的发展史及其原理解析:从Gen2、Emu Video到PixelDance、SVD、Pika 1.0
前言 考虑到文生视频开始爆发,比如11月份就是文生视频最火爆的一个月 11月3日,Runway的Gen-2发布里程碑式更新,支持4K超逼真的清晰度作品(runway是Stable Diffusion最早版本的开发商,Stability AI则开发的SD后续版本)11月16日&a…...
SQL Server 2016(基本概念和命令)
1、文件类型。 【1】主数据文件:数据库的启动信息。扩展名为".mdf"。 【2】次要(辅助)数据文件:主数据之外的数据都是次要数据文件。扩展名为".ndf"。 【3】事务日志文件:包含恢复数据库的所有事务…...
高效解决E-Hentai图库下载难题:实用下载工具全攻略
高效解决E-Hentai图库下载难题:实用下载工具全攻略 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 在数字资源管理领域,E-Hentai作为知名的漫画…...
比特币钱包恢复工具btcrecover:从原理到实践的开源解决方案
比特币钱包恢复工具btcrecover:从原理到实践的开源解决方案 【免费下载链接】btcrecover An open source Bitcoin wallet password and seed recovery tool designed for the case where you already know most of your password/seed, but need assistance in tryi…...
UI-TARS-desktop快速上手:10分钟完成Qwen3-4B多模态Agent桌面版部署与任务验证
UI-TARS-desktop快速上手:10分钟完成Qwen3-4B多模态Agent桌面版部署与任务验证 想体验一个能看懂屏幕、操作软件、帮你完成任务的AI助手吗?今天要介绍的UI-TARS-desktop,就是一个内置了强大视觉理解能力的多模态AI Agent桌面应用。它基于Qwe…...
Anthropic 又双叒翻车了:Claude Code源代码打包失误,这已经是第几次了?
今天(2026-03-31)上午,Anthropic的Claude Code CLI又出大糗了。 安全研究员 Chaofan Shou发现: 他们的 npm 包里多塞了一个 60MB 的 cli.js.map 文件。 结果呢?完整源代码直接公开——1900多个 TypeScript 文件&#x…...
Wan2.2-T2V-A5B保姆级使用指南:手把手教你用文字秒出创意视频
Wan2.2-T2V-A5B保姆级使用指南:手把手教你用文字秒出创意视频 1. 为什么选择Wan2.2-T2V-A5B? 在短视频内容爆炸式增长的今天,快速将创意转化为视频内容已经成为刚需。Wan2.2-T2V-A5B正是为解决这一需求而生的轻量级文本到视频生成模型。 这…...
告别996!我用Qoder AI编程平台,一天搞定全栈电商项目(附保姆级实战流程)
从零到上线:Qoder AI全栈电商项目实战手记 凌晨三点的显示器蓝光里,我第17次调试购物车接口时,咖啡杯底黏着的便签写着"再熬三天就能交付"。这个典型的程序员996场景,在上个月使用Qoder开发新电商平台时被彻底颠覆——从…...
【昇腾实战】MindIE框架下DeepSeek-R1模型部署与性能调优指南
1. 昇腾环境准备与驱动安装 拿到昇腾服务器后,第一件事就是搭建基础运行环境。我遇到过不少开发者卡在驱动安装环节,其实只要注意几个关键点就能避坑。首先到华为昇腾官网下载对应版本的驱动和固件包,这里有个细节:一定要核对服务…...
ofa_image-caption_coco_distilled_en快速部署教程:7860端口WebUI调用全流程详解
ofa_image-caption_coco_distilled_en快速部署教程:7860端口WebUI调用全流程详解 本文介绍如何快速部署和使用ofa_image-caption_coco_distilled_en模型,这是一个专门用于为图片生成英文描述的AI系统。通过简单的Web界面,任何人都能轻松上传图…...
Turbo Boost Switcher设备适配完全指南:从系统要求到机型验证全流程
Turbo Boost Switcher设备适配完全指南:从系统要求到机型验证全流程 【免费下载链接】Turbo-Boost-Switcher Turbo Boost disabler / enable app for Mac OS X 项目地址: https://gitcode.com/gh_mirrors/tu/Turbo-Boost-Switcher Turbo Boost Switcher是一款…...
小白友好!Stable Diffusion v1.5单卡运行多个服务,详细步骤+避坑指南
小白友好!Stable Diffusion v1.5单卡运行多个服务,详细步骤避坑指南 1. 为什么需要单卡多服务? 很多刚接触Stable Diffusion的朋友都会遇到这样的困扰:团队里几个人共用一台服务器,但GPU卡只有一张。一个人用的时候还…...
