Python遥感影像拼接
对于栅格影像,我们一般可以采用ENVI或ArcGIS平台进行拼接,也可以通过GEE或PIE Engine云平台进行处理。如果我们想利用人工神经网络进行操作,就需要云平台中的数据导出到本地。对于大尺度的遥感影像而言,就会存在每一景影像大小受限的问题,就会分成许多景影像,如下图所示:
因此,在对其进行操作之前,我们需要对其进行拼接。接下来我们就介绍如何利用Python进行栅格影像的拼接。
在Python中有两个强大的模块,一个是raster,一个是gdal,二者都可以对栅格数据进行处理:
Raster
import rasterio
from rasterio.merge import merge
from rasterio.plot import show
import glob
import os
import matplotlib.pyplot as plt
Importing required modules and find all
tif
files from the folder# File and folder paths dirpath = r"E:\数据集\祁连山L8" out_fp = os.path.join(dirpath, "qilianshanL8.tif") tif_file = glob.glob(os.path.join(dirpath, "*.tif")) print(tif_file)
create a list for the source raster datafiles
src_files_to_mosaic = [] for tif_f in tif_file:src = rasterio.open(tif_f)src_files_to_mosaic.append(src) print('src_files_to_mosaic', src_files_to_mosaic)
update the metadata with our new dimensions, transform and CRS and write to our computer
out_meta.update({"driver": "GTiff","height": mosaic.shape[1],"width": mosaic.shape[2],"transform": out_trans,"crs": "EPSG:4326"}) # Write the mosaic raster to disk with rasterio.open(out_fp, "w", **out_meta) as dest:dest.write(mosaic)
在处理完之后,我们也可以plt出拼接影像的效果图
mosaic, out_trans = merge(src_files_to_mosaic)
# Plot the result
show(mosaic, cmap='terrain')
当然,需要注意的是,在拼接过程中,参与拼接的影像的投影参数应该保持一致,我们既可以手动输入,也可以采用自动计算的方式
"crs": "+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs "
"crs": "EPSG:4326"
但是,对于大尺度遥感影像而言,分幅影像的投影参数往往是不同的,因此我们先要将其投影参数统一化,然后再进行拼接操作。
for i in range(len(tif_file)):dstfilename = "EPGSG32649" + str(i) + ".tif" # 根据自己的需求设置文件名with rasterio.open(tif_file[i]) as src:transform, width, height = calculate_default_transform(src.crs, dst_crs, src.width, src.height, *src.bounds)kwargs = src.meta.copy()kwargs.update({"crs": dst_crs, "transform": transform, "width": width, "height": height, "compress":'lzw'})with rasterio.open(dstfilename, "w", **kwargs) as dst:for i in range(1, src.count + 1):reproject(source=rasterio.band(src, i),destination=rasterio.band(dst, i),src_transform=src.transform,src_crs=src.crs,dst_transform=transform,dst_crs=dst_crs,resampling=Resampling.nearest,)
下面是官方关于Creating a raster mosaic的链接:
Rasterhttps://autogis-site.readthedocs.io/en/latest/notebooks/Raster/raster-mosaic.html
GDALGDALhttps://www.neonscience.org/resources/learning-hub/tutorials/merge-lidar-geotiff-py
Python遥感影像拼接相关推荐
- python 遥感影像拼接
python实现遥感影像的拼接 from osgeo import gdal, gdalconstdef RasterMosaic():inputrasfile1 = gdal.Open(" ...
- Python遥感图像处理应用篇(二十二):Python+GDAL 批量等距离裁剪影像-续
之前写过一篇按照指定行列号数量来进行影像等距离裁剪的博客,链接如下: Python遥感图像处理应用篇(二十二):Python+GDAL 批量等距离裁剪影像_空中旋转篮球的博客-CSDN博客_pytho ...
- Python遥感图像处理应用篇(九):使用NDVI指数数据批量计算植被覆盖度FVC
1.植被覆盖度相关概念 植被覆盖度( Fractional Vegetation Cover,FVC)指植被(包括叶.茎.枝)在地面的垂直投影面积占统计区总面积的百分比.通常采用像元二分模型计算: 计 ...
- Python遥感图像处理应用篇(十六):GDAL 将归一化处理csv数据转化为遥感影像
1.使用数据 将上一篇文章中得到的计算结果作为转换数据.链接如下: Python遥感图像处理应用篇(十五):GDAL 读取多光谱数据做归一化处理_空中旋转篮球的博客-CSDN博客 2.实现代码 基本思 ...
- Python遥感图像处理--开篇
Python遥感图像处理主要采用python编程语言,使用arcpy以及gdal等库进行遥感图像数据处理及应用.包括遥感图像的拼接.镶嵌.裁剪.格式转换等基础与处理操作以及常用遥感指数的批量计算,比如 ...
- Python遥感图像处理应用篇(二十四):Python绘制遥感图像各波段热力图(相关系数矩阵)
给多光谱遥感图像各个波段绘制热力图,首先需要计算波段之间的相关系数矩阵,而计算遥感图像波段相关系数矩阵有不同的方法,常用的我们可以采用遥感图像处理软件计算,比如ENVI软件就可以计算相关系数矩阵,使用 ...
- Python遥感图像处理应用篇(五):python如何使用numpy对遥感图像做卷积运算
本篇接着上一篇(Python遥感图像处理应用篇(四):python如何使用numpy读取遥感图像光谱值)继续深入,对遥感图像做卷积运算处理 1.基本思路 1.1 设置卷积核 这里就用3*3大小的卷积核 ...
- Python遥感图像处理应用篇(二十五):Python+GDAL 波段组合
1.使用场景描述 之前使用arcpy python2.7写了一篇进行遥感数据波段组合计算的博文,使用场景是将所有单波段数据放在一个文件夹中(如下图),文件名称前缀一样,后缀波段编号用来区分不同的波段, ...
- Python遥感图像处理应用篇(二十三):Python+GDAL 批量拼接图像
遥感影像拼接分多种不同的情况,比如比较常用的是两幅影像拼接或者多个图像合并为一个图像. GDAL中实现影像拼接的方式也有多种,比如常用可以通过numpy读取影像数组,并计算各个图像的numpy数组范围 ...
- python遥感影像分类代码_python,sklearn,svm,遥感数据分类,代码实例
python,sklearn,svm,遥感数据分类,代码实例,数据,函数,精度,遥感,路径 python,sklearn,svm,遥感数据分类,代码实例 易采站长站,站长之家为您整理了python,s ...
最新文章
- 在不root手机的情况上读取Data目录上的文件
- MySQL5.6 Performance_schema
- 为什么要用webUI?
- P5039 [SHOI2010]最小生成树(网络流)
- ASP.NET教程11
- 前沿 | 张钹院士畅谈清华大学如何办人工智能专业
- 报表类似选项卡的功能
- ORA-01476: divisor is equal to zero解决方法
- 上下文无关问法cfg
- win10配置python3虚拟环境_win10下搭建python3+scarpy虚拟环境
- Eclipse配置反编译
- 校验EXE文件防止软件被破解
- vnc远程工具的使用教程
- vim使用自定义snippets
- seo优化:如何写伪原创文章
- FFmpeg 源码之分配与释放 AVPacket 常用函数
- SpringMVC整合websocket实现消息推送及触发
- 基于SpringBoot+VUE的线上教学管理平台系统
- springboot 使用熔断器
- 同盾李晓林:打造互联互通机制,化解数据安全保护与数据共享矛盾
热门文章
- 关于使用J-Flash直接烧录bin文件的方法
- 初谈证券交易系统开发核心
- 手机APP开发常用工具有哪些
- mysql rds 是什么_mysql.rds.aliyuncs.com
- 中通快递信息怎么批量导出到表格呢?
- angular--安全导航操作符 ( ?. )、非空断言操作符(!) (实用)
- 浅析乡镇房地产产业现状及其对乡镇经济发展的推动力
- python实现指纹识别毕业论文_指纹识别系统毕业论文.doc
- java 抽屉效果_[Java教程]抽屉组件的滑动效果_星空网
- D - Frodo and pillows CodeForces - 760B