对于栅格影像,我们一般可以采用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遥感影像拼接相关推荐

  1. python 遥感影像拼接

    python实现遥感影像的拼接 from osgeo import gdal, gdalconstdef RasterMosaic():inputrasfile1 = gdal.Open(" ...

  2. Python遥感图像处理应用篇(二十二):Python+GDAL 批量等距离裁剪影像-续

    之前写过一篇按照指定行列号数量来进行影像等距离裁剪的博客,链接如下: Python遥感图像处理应用篇(二十二):Python+GDAL 批量等距离裁剪影像_空中旋转篮球的博客-CSDN博客_pytho ...

  3. Python遥感图像处理应用篇(九):使用NDVI指数数据批量计算植被覆盖度FVC

    1.植被覆盖度相关概念 植被覆盖度( Fractional Vegetation Cover,FVC)指植被(包括叶.茎.枝)在地面的垂直投影面积占统计区总面积的百分比.通常采用像元二分模型计算: 计 ...

  4. Python遥感图像处理应用篇(十六):GDAL 将归一化处理csv数据转化为遥感影像

    1.使用数据 将上一篇文章中得到的计算结果作为转换数据.链接如下: Python遥感图像处理应用篇(十五):GDAL 读取多光谱数据做归一化处理_空中旋转篮球的博客-CSDN博客 2.实现代码 基本思 ...

  5. Python遥感图像处理--开篇

    Python遥感图像处理主要采用python编程语言,使用arcpy以及gdal等库进行遥感图像数据处理及应用.包括遥感图像的拼接.镶嵌.裁剪.格式转换等基础与处理操作以及常用遥感指数的批量计算,比如 ...

  6. Python遥感图像处理应用篇(二十四):Python绘制遥感图像各波段热力图(相关系数矩阵)

    给多光谱遥感图像各个波段绘制热力图,首先需要计算波段之间的相关系数矩阵,而计算遥感图像波段相关系数矩阵有不同的方法,常用的我们可以采用遥感图像处理软件计算,比如ENVI软件就可以计算相关系数矩阵,使用 ...

  7. Python遥感图像处理应用篇(五):python如何使用numpy对遥感图像做卷积运算

    本篇接着上一篇(Python遥感图像处理应用篇(四):python如何使用numpy读取遥感图像光谱值)继续深入,对遥感图像做卷积运算处理 1.基本思路 1.1 设置卷积核 这里就用3*3大小的卷积核 ...

  8. Python遥感图像处理应用篇(二十五):Python+GDAL 波段组合

    1.使用场景描述 之前使用arcpy python2.7写了一篇进行遥感数据波段组合计算的博文,使用场景是将所有单波段数据放在一个文件夹中(如下图),文件名称前缀一样,后缀波段编号用来区分不同的波段, ...

  9. Python遥感图像处理应用篇(二十三):Python+GDAL 批量拼接图像

    遥感影像拼接分多种不同的情况,比如比较常用的是两幅影像拼接或者多个图像合并为一个图像. GDAL中实现影像拼接的方式也有多种,比如常用可以通过numpy读取影像数组,并计算各个图像的numpy数组范围 ...

  10. python遥感影像分类代码_python,sklearn,svm,遥感数据分类,代码实例

    python,sklearn,svm,遥感数据分类,代码实例,数据,函数,精度,遥感,路径 python,sklearn,svm,遥感数据分类,代码实例 易采站长站,站长之家为您整理了python,s ...

最新文章

  1. 在不root手机的情况上读取Data目录上的文件
  2. MySQL5.6 Performance_schema
  3. 为什么要用webUI?
  4. P5039 [SHOI2010]最小生成树(网络流)
  5. ASP.NET教程11
  6. 前沿 | 张钹院士畅谈清华大学如何办人工智能专业
  7. 报表类似选项卡的功能
  8. ORA-01476: divisor is equal to zero解决方法
  9. 上下文无关问法cfg
  10. win10配置python3虚拟环境_win10下搭建python3+scarpy虚拟环境
  11. Eclipse配置反编译
  12. 校验EXE文件防止软件被破解
  13. vnc远程工具的使用教程
  14. vim使用自定义snippets
  15. seo优化:如何写伪原创文章
  16. FFmpeg 源码之分配与释放 AVPacket 常用函数
  17. SpringMVC整合websocket实现消息推送及触发
  18. 基于SpringBoot+VUE的线上教学管理平台系统
  19. springboot 使用熔断器
  20. 同盾李晓林:打造互联互通机制,化解数据安全保护与数据共享矛盾

热门文章

  1. 关于使用J-Flash直接烧录bin文件的方法
  2. 初谈证券交易系统开发核心
  3. 手机APP开发常用工具有哪些
  4. mysql rds 是什么_mysql.rds.aliyuncs.com
  5. 中通快递信息怎么批量导出到表格呢?
  6. angular--安全导航操作符 ( ?. )、非空断言操作符(!) (实用)
  7. 浅析乡镇房地产产业现状及其对乡镇经济发展的推动力
  8. python实现指纹识别毕业论文_指纹识别系统毕业论文.doc
  9. java 抽屉效果_[Java教程]抽屉组件的滑动效果_星空网
  10. D - Frodo and pillows CodeForces - 760B