前言

GDAL自带的镶嵌功能比较单一,只能将图像简单拼接到一起,不能实现直方图匀色以及羽化等功能,但是对GEE导出的分块影像进行镶嵌较为适合。

优点:

  1. 使用代码,镶嵌多个影像较为简便
  2. GDAL较为稳定
  3. 镶嵌时NAN的区域不会改为0或者其他自定义的值,仍为NAN

缺点:

  1. 速度较ENVI慢
  2. 镶嵌进度不明显
  3. 镶嵌过程中占用大量硬盘空间,超过100G数据不建议使用该方法

具体代码

一、GDAL镶嵌命令

gdal_merge [--help] [--help-general]
[-o <out_filename>] [-of <out_format>] [-co <NAME>=<VALUE>]...
[-ps <pixelsize_x> <pixelsize_y>] [-tap] [-separate] [-q] [-v] [-pct]
[-ul_lr <ulx> <uly> <lrx> <lry>] [-init "<value>[ <value>]..."]
[-n <nodata_value>] [-a_nodata <output_nodata_value>]
[-ot <datatype>] [-createonly] <input_file> [<input_file>]...

仅列举常用参数,具体参数参阅https://gdal.org/programs/gdal_merge.html

-o <out_filename>

输出文件的名称,如果尚不存在则将创建该文件(默认为“out.tif”)。

-of <format>

选择输出格式。从 GDAL 2.3 开始,如果未指定,则从扩展名猜测格式(之前为 GTiff)。使用短格式名称。

-ot <type>

强制输出图像带具有驱动程序支持的特定数据类型,可能是以下之一: Byte 、 Int8 、 UInt16 、 Int16 、 UInt32 、 Int32 、 UInt64 、 Int64 、 Float32 、 Float64 、 CInt32 、 CFloat32 或 CFloat64 。

-ps <pixelsize_x> <pixelsize_y>

用于输出文件的像素大小。如果未指定,将使用第一个输入文件的分辨率。

-ul_lr <ulx> <uly> <lrx> <lry>

输出文件的范围。如果未指定,将使用所有输入文件的聚合范围。

-v

完成镶嵌操作后生成详细输出。

-n <nodata_value>

忽略与此像素值合并的文件中的像素。

-a_nodata <output_nodata_value>

Assign a specified nodata value to output bands.

将指定的无数据值分配给输出波段。

-init <"value(s)">

使用这些值预初始化输出图像带。但是,它未在输出文件中标记为 nodata 值。如果仅给出一个值,则在所有频段中使用相同的值。(常用于生成单值图像)

<input_file> [<input_file>]

输入图像路径,可以为列表格式

二、代码示例

# 引用函数库
from osgeo import gdal
import os
import glob
inputdir = r'输入文件的文件夹地址'
outputdir = r'输出文件的文件地址,需要加上文件名.tif'
files = glob.glob(os.path.join(inputdir,'*.tif'))
paths = []
for file in files:
filepath = os.path.join(inputdir,file)
paths.append(filepath)
paths = ' '.join(paths)
print(paths)
command = f"python gdal_merge.py -o {outputdir} {paths}"
os.system(command)

三、注意事项

  1. 使用本方法主要因为可以自动化执行,如果遇到单幅图像ENVI打开速度很慢的情况,请先到GEE中验证时间筛选范围以及其他限制条件,同时由于均值镶嵌易产生位数较多的数据,所以中值镶嵌较均值镶嵌占用小,且不易出现ENVI无法打开的情况。
  2. 该代码仅为gdal中的一种镶嵌方法,且由于使用命令行命令进行镶嵌,所以无法进行多线程运算,速度较慢,占用空间较慢,如果条件不足请勿选择本方法。
  3. 可通过command字符串自行修改命令中的相关参数。

对GEE下载时分块影像进行镶嵌(GDAL)的更多相关文章

  1. nginx,文件下载,预览,防止浏览器下载时直接打开,防止预览时直接下载文件,解决nginx谷歌浏览器不支持下载问题

    公司项目逐渐增多,对效率的要求越来越高,不同项目分部不同服务器,最初想用nginx 就是为了多个项目用一个url和服务器宕机解决方案 nginx也可作为附件服务器,毕竟nginx也对静态文件支持较好, ...

  2. 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象

    之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的f ...

  3. 使用贝赛尔曲线画扇形、圆形、弧线、多边形,实现App下载时的动画效果demo

    // // MyView.swift // TestUIBezierPath // // Created by iCodeWoods on 16/5/8. // Copyright © 2016年 i ...

  4. c#的事件用法——实现下载时发生的事件

    //下载时发出的事件 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  5. SVN下载时提示“已经锁定”

    问题现象:同事让我提交代码,我就先下载后提交,但下载时提示“D:\ABC”已经锁定. 问题原因:原因不明. 问题处理:向上退一级,右击目录->SVN->"清理"-> ...

  6. java把流抛给浏览器下载时,当下载的文件文件名为中文时,出现中文名被替换为“----------”的情况

    比如说,下载的文件名为: 软件分析报告.docx,当使用流抛给浏览器下载时,浏览器下载的文件为:-----------.docx 出现这种情况的原因:大体的原因就是header中只支持ASCII,所以 ...

  7. Struts2 取消 下载时异常

    Struts2环境下,通过Struts2提供的下载方式进行下载时出现的java.lang.IllegalStateException异常 2011-1-820:34:20 org.apache.cat ...

  8. stm32f0系列在SWD模式下载时复位失败

    用stm32f030K6T6做了个小玩意,仿真电路就直接把3.3V,SWDIO,SWCLK,GND引出来连接到j-link的这四个角上,SWDIO和SWCLK引脚既没有上拉也没有下拉.     MCU ...

  9. 关于Xilinx FPGA JTAG下载时菊花链路中的芯片数量

      关于Xilinx FPGA JTAG下载时菊花链路中的芯片数量 emesjx | 2014-08-13 13:13:30    阅读:1793   发布文章 当一个系统中含有多片(2片以上)Xil ...

  10. 使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象

    之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的f ...

随机推荐

  1. 尝试官方的第一个SpringNative 0.11程序(WSL2)

    Spring Native是Spring推出微服务体系Spring Cloud之后的又一大举动,从名字可以猜出,Spring Native是一门面向云原生的技术.如果你还对这个概念不太理解,可以多看一 ...

  2. win10 搭建 npm 环境

    前言 最近,根据CSDN和博客园等文章的帮助下,搭建了一个npm的环境,现在将搭建过程记录下来,留作参考. 搭建过程 下载nodejs,我是使用的zip包安装的,安装包官网地址https://node ...

  3. Oracle ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    转载☞:https://blog.csdn.net/qq_25221835/article/details/82762416 ROW_NUMBER 语法 语法格式:row_number() over( ...

  4. 在Winform程序中增加隐藏的按键处理,用于处理一些特殊的界面显示或者系统初始化操作

    以前,我看到一个朋友在对一个系统做初始化的时候,通过一组魔幻般的按键,调出来一个隐藏的系统设置界面,这个界面在常规的菜单或者工具栏是看不到的,因为它是一个后台设置的关键界面,不公开,同时避免常规用户的 ...

  5. 硬核案例分享,一文带你拆解PHP语言体系下的容器化改造

    本文分享自华为云社区<PHP语言体系下的容器化改造,助力夺冠集团应用现代化>,作者: HuaweiCloudDeveloper. 1.摘要 本文主要介绍了PHP语言体系应用现代化改造上云的 ...

  6. C#开发一个可被带参数调用并返回数据的控制台应用程序

    1 标准输出流控制台程序: namespace ReturnConsoleWrite { class Program { static void Main(string[] args) { //程序功 ...

  7. ArkTS基础知识

    [习题]ArkTS基础知识 及格分85/ 满分100   判断题 1. 循环渲染ForEach可以从数据源中迭代获取数据,并为每个数组项创建相应的组件. 正确(True)错误(False) 回答正确 ...

  8. 洛谷P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题

    [NOIP2001 普及组] 最大公约数和最小公倍数问题 题目描述 洛谷题目链接:https://www.luogu.com.cn/problem/P1029 输入两个正整数 x, y,求出满足下列条 ...

  9. 用jacoco统计JAVA项目测试代码覆盖率

    一.概述 Jacoco 统计的是全量代码覆盖率.它不仅支持生成单元测试的覆盖率,也支持监控生成接口测试,功能测试的覆盖率. 在新一代精准测试技术流的影响中,各大型单位对覆盖率的追求越来越迫切.作为一款 ...

  10. java程序设计期末复习总结&复盘

    java复习 java的特点:简单.面向对象.可移植.跨平台.分布式.多线程.稳定安全.高性能 一个数组可以存放许多不同类型的数值. (F) StringBuffer类是线程安全的,StringBui ...