GEE学习笔记 八十:批量下载影像

news2024/10/1 7:38:37

最近问如何批量导出集合的小伙伴非常多,一个一个回复太麻烦,我这里直接给一段例子代码吧:

  1. var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR");

  2. var roi = /* color: #d63000 */ee.Geometry.Polygon(

  3.         [[[115.64960937499995, 39.112756306811285],

  4.           [116.28681640624995, 39.163883889810315],

  5.           [116.21540527343745, 39.58850167846649],

  6.           [115.70454101562495, 39.6054326422912]]]);

  7. Map.centerObject(roi, 8);

  8. function rmL8Cloud(image) {

  9.   var cloudShadowBitMask = (1 << 3);

  10.   var cloudsBitMask = (1 << 5);

  11.   var qa = image.select('pixel_qa');

  12.   var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)

  13.                  .and(qa.bitwiseAnd(cloudsBitMask).eq(0));

  14.   return image.updateMask(mask);

  15. }

  16. var l8Imgs = l8.filterBounds(roi)

  17.                .filterDate("2018-1-1", "2018-3-1")

  18.                .map(rmL8Cloud);

  19. print("l8Imgs", l8Imgs);

  20. Map.addLayer(l8Imgs, {min:0, max:3000, bands:["B4","B3","B2"]}, "l8Imgs");

  21. Map.addLayer(roi, {color: "red"}, "roi");

  22. //影像集合导出方法

  23. function exportImageCollection(imgCol) {

  24.   var indexList = imgCol.reduceColumns(ee.Reducer.toList(), ["system:index"])

  25.                         .get("list");

  26.   indexList.evaluate(function(indexs) {

  27.     for (var i=0; i<indexs.length; i++) {

  28.       var image = imgCol.filter(ee.Filter.eq("system:index", indexs[i])).first();

  29.       image = image.toInt16();

  30.       Export.image.toDrive({

  31.         image: image.clip(roi),

  32.         description: indexs[i],

  33.         fileNamePrefix: indexs[i],

  34.         region: roi,

  35.         scale: 30,

  36.         crs: "EPSG:4326",

  37.         maxPixels: 1e13

  38.       });

  39.     }

  40.   });

  41. }

  42. exportImageCollection(l8Imgs);

代码分析:

我这里说几个要注意的地方吧

(1)这里使用的是异步导出数据方式 evaluate() 方法

(2)导出代码中有一句话

image = image.toInt16();

这句话的作用是将image影像的波段都强制转为Int16类型数据,这么做的原因是使用toDrive()方法影像的波段类型必须是一致的,这点和导出到Asset不太一样

(3)region参数必须要设置,同时需要注意的是它的类型是geometry,不是featureCollection。如果我们用的是矢量集合,那么一般做法是:

featureCollection.geometry().bounds()作为region的参数

(4)maxPixels必须设置,因为我们在导出大范围的影像时候会出现默认参数过小导致导出失败(默认参数是1e8)

(5)crs推荐设置为EPSG:4326

运行结果:

导出界面

导出到drive后

来源请引用:地理遥感生态网科学数据注册与出版系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从0到1一步一步玩转openEuler--17 openEuler DNF(YUM)检查更新

文章目录17.1 检查更新17.2 升级17.3 更新所有的包和它们的依赖DNF是一款Linux软件包管理工具&#xff0c;用于管理RPM软件包。DNF可以查询软件包信息&#xff0c;从指定软件库获取软件包&#xff0c;自动处理依赖关系以安装或卸载软件包&#xff0c;以及更新系统到最新可用版本…

Nacos框架服务注册发现和配置中心原理

文章目录1.简介2.整体架构和原理2.1 服务发现注册原理2.1.1 注册和拉取数据2.1.2 Server集群一致性2.1.3 健康检查2.2 配置中心原理2.2.1 支持功能和资源模型2.2.2 server集群数据一致性问题2.2.3 client和server的通信监听改动方式2.2.4 client拉取数据2.2.5 client请求server…

kubernetes教程 --Pod生命周期

Pod生命周期 pod创建过程运行初始化容器&#xff08;init container&#xff09;过程运行主容器&#xff08;main container&#xff09;过程 容器启动后钩子&#xff08;post start&#xff09;、容器终止前钩子&#xff08;pre stop&#xff09;容器的存活性探测&#xff08;…

利用设计模式、反射写代码

软件工程师和码农最大的区别就是平时写代码时习惯问题&#xff0c;码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码。 业务同学抱怨业务开发没有技术含量&#xff0c;用不到设计模式、Java 高级特性、OOP&#xff0c;平时写代码都在堆 CRUD&#xff0c;个…

网站项目部署在k8s案例与Jenkins自动化发布项目(CI/CD)

在K8s平台部署项目流程 在K8s平台部署Java网站项目 制作镜像流程 第一步&#xff1a;制作镜像 使用镜像仓库&#xff08;私有仓库、公共仓库&#xff09;&#xff1a; 1、配置可信任&#xff08;如果仓库是HTTPS访问不用配置&#xff09; # vi /etc/docker/daemon.json { "…

matlab 简单的水轮机系统的模糊pid控制仿真

1、内容简介略641-可以交流、咨询、答疑2、内容说明模糊介绍&#xff1a;Matlab4.2以后的版本中推出的模糊工具箱(Fuzzy Toolbox)&#xff0c;为仿真模糊控制系统提供了很大的方便。 在Simulink环境下对PID控制系统进行建模是非常方便的&#xff0c;而模糊控制系统与PID控制系统…

DataFrame 循环处理效率的记录

几种工具的处理效率比较&#xff1a; 每次循环都使用复杂的操作尽可能拆分成向量化操作&#xff0c;也可转为numpy&#xff0c;再用numba加速。 对 DataFrame 中的数据做循环处理的效率&#xff1a; 方法一&#xff1a;下标循环 for i in range(len(df)): if df.iloc[i][…

GEE学习笔记 七十七:GEE学习方法简介

这是一篇关于学习方法的思考探索&#xff0c;当然我不会大篇文章介绍什么学习方法&#xff08;因为我也不是这方面的专家?&#xff09;&#xff0c;这个只是总结一下我是如何学习GEE以及在学习中遇到问题时如何解决问题的。我写这篇文章的目的就是在和一些学习GEE的新同学接触…

Stable diffusion扩散模型相关原理

时隔两年半&#xff08;2年4个月&#xff09;&#xff0c;我又回来研究生成技术了。以前学习研究GAN没结果&#xff0c;不管是技术上&#xff0c;还是应用产品上&#xff0c;结果就放弃了&#xff0c;现在基于diffusion的技术又把生成技术带上了一个新的高度。现在自己又来研究…

一款好的低代码开发平台应该是什么样?

一款好的低代码开发平台应该是什么样&#xff1f; 以企业级应用构建来讲&#xff0c;完成一个应用复杂度随着技术的进步、需求的细化、业务要求的变化并不是逐渐降低&#xff0c;而是逐渐提升。用户想要有更好的体验&#xff0c;复杂度更是成倍提升。 基于此&#xff0c;低代码…

【机器学习】Sklearn 集成学习-投票分类器(VoteClassifier)

前言 在【机器学习】集成学习基础概念介绍中有提到过&#xff0c;集成学习的结合策略包括&#xff1a; 平均法、投票法和学习法。sklearn.ensemble库中的包含投票分类器(Voting Classifier) 和投票回归器&#xff08;Voting Regressor)&#xff0c;分别对回归任务和分类任务的…

比Teambition、Worktile 更适合研发团队的几大工具盘点

Worktile 和 Teambitiom 哪个更好&#xff1f;两个产品各有特点。1.Teambition 优势&#xff1a;操作简单、个人版永不收费、更适合小型团队&#xff1b;2.Teambition 劣势&#xff1a;无法满足中大型团队复杂的项目管理、自定义能力弱、无法与钉钉以外的工具打通等&#xff1b…

再次遇到RuntimeError: CUDA error: an illegal memory access was encountered

之前遇到过一次记录下来了&#xff0c;第一次遇到 翻看之前的记录&#xff0c;首先想着如何让pycharm准确地显示错误。 1:os.environ[‘CUDA_LAUNCH_BLOCKING’] 1’,模型前加这句&#xff0c;但是我在train文件中已经加了&#xff0c;还是不清楚报错原因。 2&#xff1a;使用…

Python快速上手系列--三元表达式--入门篇

不知道你是否在写代码的时候会用到很多的if else的判断呢。如果是&#xff0c;不妨看完这一篇文章&#xff0c;看看是否对你有一定的帮助。先来看看三元表达式的写法&#xff1a;那么怎么写呢&#xff0c;看看&#xff1a;这里的意思是&#xff0c;如果为真&#xff0c;则输入1…

RTX40 系列游戏本与台式机显卡 AI 计算力对比

RTX40 系列游戏本还有几天就上市了&#xff0c;商家选了个比较特别的日子&#xff0c;2 月 22 号 22:00&#xff0c;真是有心了。为了用游戏本做 AI 的朋友选的时候有的放矢&#xff0c;特意查了一下 RTX40 系列的 CUDA 核心与频率&#xff0c;计算一下 FP32 TFLOPS&#xff0c…

C++中如何实现用异或运算找出数组中只出现一次的数字???

文章目录1、异或运算符的运算1、异或运算符的运算 问题描述&#xff1a; 给出一个指定的数组&#xff0c;只有一个数出现一次&#xff0c;剩下都出现两次&#xff0c;找出出现一次的数字。指定数组为[1,2,2,1,3,4,3]。 样例输出&#xff1a;4 #include<iostream> using…

Django框架之模型视图

视图 重点 HttpRequest 位置参数和关键字参数查询字符串请求体:表单数据,JSON数据请求头 HttpResponse HttpResponse JsonResponse redirect 类视图 类视图的定义和使用 类视图装饰器(难点) 视图介绍和项目准备 视图介绍 视图就是应用中views.py文件中的函数视图的第一…

SpringMVC创建异步回调请求的4种方式

首先要明确一点&#xff0c;同步请求和异步请求对于客户端用户来讲是一样的&#xff0c;都是需客户端等待返回结果。不同之处在于请求到达服务器之后的处理方式&#xff0c;下面用两张图解释一下同步请求和异步请求在服务端处理方式的不同&#xff1a;同步请求异步请求两个流程…

OKCC呼叫中心支持哪些接入方式?

使用OKCC系统开展呼叫中心业务&#xff0c;要将电话打通&#xff0c;需要什么样的设备接入到OKCC系统呢&#xff1f; 目前实际广泛使用的接入方式&#xff0c;既有硬件网关接入方式&#xff0c;也有软件接入方式&#xff0c;在生产实践中&#xff0c;我们须根据实际的需求及使…