对GEE下载时分块影像进行镶嵌(GDAL)
前言
GDAL自带的镶嵌功能比较单一,只能将图像简单拼接到一起,不能实现直方图匀色以及羽化等功能,但是对GEE导出的分块影像进行镶嵌较为适合。
优点:
- 使用代码,镶嵌多个影像较为简便
- GDAL较为稳定
- 镶嵌时NAN的区域不会改为0或者其他自定义的值,仍为NAN
缺点:
- 速度较ENVI慢
- 镶嵌进度不明显
- 镶嵌过程中占用大量硬盘空间,超过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)
三、注意事项
- 使用本方法主要因为可以自动化执行,如果遇到单幅图像ENVI打开速度很慢的情况,请先到GEE中验证时间筛选范围以及其他限制条件,同时由于均值镶嵌易产生位数较多的数据,所以中值镶嵌较均值镶嵌占用小,且不易出现ENVI无法打开的情况。
- 该代码仅为gdal中的一种镶嵌方法,且由于使用命令行命令进行镶嵌,所以无法进行多线程运算,速度较慢,占用空间较慢,如果条件不足请勿选择本方法。
- 可通过command字符串自行修改命令中的相关参数。
对GEE下载时分块影像进行镶嵌(GDAL)的更多相关文章
- nginx,文件下载,预览,防止浏览器下载时直接打开,防止预览时直接下载文件,解决nginx谷歌浏览器不支持下载问题
公司项目逐渐增多,对效率的要求越来越高,不同项目分部不同服务器,最初想用nginx 就是为了多个项目用一个url和服务器宕机解决方案 nginx也可作为附件服务器,毕竟nginx也对静态文件支持较好, ...
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的f ...
- 使用贝赛尔曲线画扇形、圆形、弧线、多边形,实现App下载时的动画效果demo
// // MyView.swift // TestUIBezierPath // // Created by iCodeWoods on 16/5/8. // Copyright © 2016年 i ...
- c#的事件用法——实现下载时发生的事件
//下载时发出的事件 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...
- SVN下载时提示“已经锁定”
问题现象:同事让我提交代码,我就先下载后提交,但下载时提示“D:\ABC”已经锁定. 问题原因:原因不明. 问题处理:向上退一级,右击目录->SVN->"清理"-> ...
- java把流抛给浏览器下载时,当下载的文件文件名为中文时,出现中文名被替换为“----------”的情况
比如说,下载的文件名为: 软件分析报告.docx,当使用流抛给浏览器下载时,浏览器下载的文件为:-----------.docx 出现这种情况的原因:大体的原因就是header中只支持ASCII,所以 ...
- Struts2 取消 下载时异常
Struts2环境下,通过Struts2提供的下载方式进行下载时出现的java.lang.IllegalStateException异常 2011-1-820:34:20 org.apache.cat ...
- stm32f0系列在SWD模式下载时复位失败
用stm32f030K6T6做了个小玩意,仿真电路就直接把3.3V,SWDIO,SWCLK,GND引出来连接到j-link的这四个角上,SWDIO和SWCLK引脚既没有上拉也没有下拉. MCU ...
- 关于Xilinx FPGA JTAG下载时菊花链路中的芯片数量
关于Xilinx FPGA JTAG下载时菊花链路中的芯片数量 emesjx | 2014-08-13 13:13:30 阅读:1793 发布文章 当一个系统中含有多片(2片以上)Xil ...
- 使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的f ...
随机推荐
- 实现Quartz.NET的HTTP作业调度
Quartz.NET作为一个开源的作业调度库,广泛应用于.NET应用程序中,以实现复杂的定时任务,本次记录利用Quartz.NET实现HTTP作业调度,通过自定义HTTP作业,实现对外部API的定时调 ...
- ajax - 接口、表单、模板引擎
1. 今天继续ajax的一个学习,首先明确一个观念,接口,什么是接口,当使用ajax请求数据时,被请求的url就叫做数据接口也就是接口,注意每个接口必须有请求方式,这里有一个接口的测试工具,postm ...
- 在OwinSelfHost项目中获取客户端IP地址
在OwinSelfHost项目中,获取客户端的IP地址可以通过以下方法获得: base.Request.GetOwinContext().Request.RemoteIpAddress 创建一个Owi ...
- Dubbo依赖
项目依赖 Dubbo依赖 <!--Dubbo依赖--> <dependency> <groupId>com.alibaba</groupId> < ...
- 某手创作服务 __NS_sig3 sig3 | js 逆向
拿获取作品列表为例 https://cp.kuaishou.com/rest/cp/works/v2/video/pc/photo/list?__NS_sig3=xxxxxxxxxxx 搜索__NS_ ...
- 解决方案 | 一个VBA代码里面非常隐蔽的错误:运行时错误“5”:无效的过程调用或参数
1 代码部分 代码功能:实现使用sumatra打开指定pdf指定页码 代码: Sub OpenPDFatPage() Dim PDFFile As String Dim PageNumber As L ...
- 要想业务中台建得快,最好用Service Mesh来带
中国企业数字化转型进入深水区,业务中台及下一代微服务Service Mesh(服务网格)被越来越多的人关注,本文结合网易轻舟微服务Service Mesh实践,解析业务中台为什么需要Service M ...
- oeasy教您玩转vim - 33 - # 查找文本
文字区块 回忆上节课内容 括号间跳转 成对括号间跳转 % 不成对括号间跳转 [( 跳转到上一个没配对的 ( [) 跳转到下一个没配对的 ) [{ 跳转到上一个没配对的 { [} 跳转到下一个没配对 ...
- oeasy教您玩转vim - 76 - # 组合键映射map
会话session 回忆组合键映射的细节 上次我们定义了一系列的复合键 主要是和ctrl键一起 快速跳转window窗口 map <c-j> <c-w>j map < ...
- 吐血整理如何在Google Earth Engine上写循环 五个代码实例详细拆解
在这里同步一篇本人的原创文章.原文发布于2023年发布在知乎专栏,转移过来时略有修改.全文共计3万余字,希望帮助到GEE小白快速进阶. 引言 这篇文章主要解答GEE中.map()和.iterate() ...