目录

1、Google Earth Engine(GEE)简介

1.1 开发环境

1.2 说明书

2、GEE账号注册

3、GEE 查询库内卫星影像以及调用

3.1 数据集Datasets

3.2 加载影像

3.2.1 绘制感兴趣区

3.2.2 加载landsat 8数据集

3.3 影像的预处理

3.3.1 剔云处理

3.3.2 影像裁切

4、GEE影像上传和导出

4.1 上传本地文件

4.2 在GEE上导出影像数据

5、GEE共享以及全套代码


1、Google Earth Engine(GEE)简介

遥感大数据云计算服务平台为区域或全球土地利用空间信息的获取提供了新的途径和方法。GEE 云平台是一款专门用于处理卫星影像数据和其他地球观测数据的云端运算平台,不但存储了完整的对地观测卫星影像数据,以及环境和社会经济等数据,还提供足够的运算能力对这些数据进行处理,成为解决遥感数据收集困难和处理效率低下问题的新途径。

官方网址:https://earthengine.google.com/

1.1 开发环境

在Guides中介绍了该云计算平台是由JS开发的共同Python语言。所以有这方面基础的读者可是说非常容易上手。在开发环境(Development Environment)中提到,一般有两种方式进行编译:1中是使用平台自带的(如下图)Code Editor网页版,另一种是通过搭建Python环境在本地进行编译。

1.2 说明书

安利这个平台强烈的第一个原因就是它真的把说明书做的非常出色!

查看说明书的方式:官方网址右上角菜单栏Platform->Documentation->Reference. 即可。

非常的清晰,并且语法,示例一气呵成,更是有 吴秋生老师的视频讲解

第二个原因就是该平台的功能强大性,这个后续会做详细说明。


2、GEE账号注册

由于GEE是谷歌公司开发的一款云端计算平台,访问该网站需要科学上网才行。当你注册的时候,如果即使在科学上网的情况下遇到了无法接收到国内手机短信的情况,可以通过某宝来解决(别问我为什么知道)。申请完之后一般需要等官网发邮件通知,1-3天左右,这里强烈建立使用学校邮箱或者企业邮箱注册!!!

3、GEE 查询库内卫星影像以及调用

3.1 数据集Datasets

查看数据集的方式:官方网址右上角菜单栏Datasets.这里我们直接查看Landsat数据集。

这里我们可以看到Landsat数据集来源于USGS,被分为了Collection2 和 Collection1两种产品的数据集,Collection1产品是2016年建立的,现在被Collection2所取代。我们知道USGS将产品分为了3类:①T1:满足几何和辐射质量要求的数据;②T2:不符合T1级别要求的数据;③RT:实时数据,尚未评估的数据(最多需要一个月)。

这里我们点进Landsat8 Surface Reflectance(SR) T1产品进行查看。

里面由详细的数据产品描述,波段组成,图像属性等等,“ee.ImageCollection("LANDSAT/LC08/C02/T1_L2")”是导入加载影像所需要的关键代码。即这里用到的是“ee.ImageCollection()”这个API函数。如果还不够直观,下面还提供了示例,可供查看。

3.2 加载影像

这里将在“Earth Engine Code Editor”中实现。

3.2.1 绘制感兴趣区

方法一:直接在地图上绘制想要的感兴趣区多边形;

方法二:先通过4.1节的方法上传已有的矢量边界,然后通过如下代码调用:

  1. var collectionName = 'users/city/Nanjing';
  2. var roi = ee.FeatureCollection(collectionName);

接着导入roi使之显示在地图上,代码如下:

  1. //在地图中心显示感兴趣区roi以及缩放
  2. Map.centerObject(roi, 7);
  3. //添加一个显示roi的图层并设置参数
  4. Map.addLayer(roi, {color: "red"}, "roi");

点击 "RUN",运行完之后如下图:

3.2.2 加载landsat 8数据集

代码如下,以及运行后的结果:

  1. //选择要导出的数据类型
  2. var dataset = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') //选择数据集
  3. .filterBounds(roi) //区域筛选
  4. .filterDate('2021-06-01', '2021-10-01'); //时间筛选
  5. // Applies scaling factors.即选择所需波段
  6. function applyScaleFactors(image) {
  7. var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
  8. var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
  9. return image.addBands(opticalBands, null, true)
  10. .addBands(thermalBands, null, true);
  11. }
  12. dataset = dataset.map(applyScaleFactors);
  13. //可视化参数设置
  14. var visualization = {
  15. bands: ['SR_B4', 'SR_B3', 'SR_B2'],
  16. min: 0.0,
  17. max: 0.3,
  18. };
  19. //添加一个新的显示Landsat8影像的图层
  20. Map.addLayer(dataset, visualization, 'Landsat8');

3.3 影像的预处理

3.3.1 剔云处理

可以看到符合该时间段的影像已经被调用并且加载在地图上。但是云量还是没有设定,所以下一步我们将进行剔云处理。核心代码如下:

  1. //去云处理
  2. function maskL8sr(image) {
  3. var cloudShadowBitMask = (1 << 3);
  4. var cloudsBitMask = (1 << 5);
  5. var qa = image.select('QA_PIXEL'); //注意:Collection2产品中将“pixel_qa”改为“QA_PIXEL”
  6. var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
  7. .and(qa.bitwiseAnd(cloudsBitMask).eq(0));
  8. return image.updateMask(mask);
  9. }

剔云后,云量控制在了可用范围以内

3.3.2 影像裁切

我们可以发现影像超出研究区所在范围,这里我们实现在地图上完成对影像的裁切,代码如下:

  1. //对影像进行裁切
  2. var l8Img = dataset.mosaic().clip(roi);


4、GEE影像上传和导出

4.1 上传本地文件

要上传和管理地理空间数据集,需要使用代码编辑器中的资产管理器(Assets)。资产管理器位于代码编辑器左侧的资产选项卡上。

点击 “NEW” 图标,我们可以看到如图所示的选项,有栅格类型(.tiff)、矢量类型(.shp)和表格类型(.csv)等.        这里我将本地的 “Nanjing”矢量边界文件上传到GEE当中。

这里需要注意的是,

.shp文件是主文件,存储空间对象的坐标点信息,比如构成点、线、面对象的坐标点序列。

.dbf文件存储空间对象对应的属性表信息,比如一个面对象可能有名称、编码、面积等,这些信息都保存在dbf文件中。这个文件可以用excel单独打开。

.prj文件存储空间坐标系统,指明了shp文件包含的坐标点是在哪个坐标系下的。这个文件是个普通的文本文件,可以用记事本打开。

.shx文件存储索引信息,指明空间对象的隶属关系。

以上四个文件是打开shp主文件所必须的(如果没有prj文件,但此时缺乏地理坐标系统,是不完整的,在GEE上导入会报错),它们共同构成一个完整的shp文件系统,不要丢失。

        

上传成功后,在刷新左侧的菜单栏,可以看到刚刚上传的Nanjing矢量文件,单击进入details界面,可以看到其存放的位置同时也是调用的代码。


4.2 在GEE上导出影像数据

最后,我们将所选择的遥感数据导出,代码如下:

  1. //导出L8影像 Landsat8 all bands loop to Drive
  2. var bands = l8Img.bandNames().getInfo();
  3. for (var i=0; i<l8Img.bandNames().size().getInfo();i++){
  4. print(bands[i]);
  5. Export.image.toDrive({
  6. image: l8Img.select(bands[i]), //设置要输出的影像
  7. fileNamePrefix: "Landsat8_"+bands[i],
  8. //folder: "training01", //设置下载影像在Drive中存储的文件夹名称(可不设置)
  9. scale:30, //空间分辨率,单位:米
  10. description: "Landsat8_"+bands[i], // 设置下载任务tasks的名称
  11. maxPixels:1e13, //单幅影像输出的最大像元数
  12. region:roi.geometry().bounds() //要下载影像的范围
  13. });
  14. }

然后我们将影像上传到云端计算机ToDrive,等待上传完成之后即可在云端计算机内下载对应影像,可以根据自己所需要的波段进行下载,很灵活,但是上传到云端的速度其实挺慢的。


5、GEE共享以及全套代码

GEE的在线编译器提供共享功能,复制网址即可自动加载页面内的代码,非常实用!

分享网址:https://code.earthengine.google.com/b0ec40c02823eb3048d0dab9fac60090

  1. //设置感兴趣区域roi
  2. var roi = ee.FeatureCollection("users/knight20211211022/Nanjing");
  3. //定义导出影像数据函数,三个参数
  4. function exportImage(image, region, fileName) {
  5. Export.image.toDrive({
  6. image: image, //设置要输出的影像
  7. description: "Drive-"+fileName, // 设置下载任务tasks的名称
  8. fileNamePrefix: fileName, //设置下载影像的名称
  9. //folder: "training01", //设置下载影像在Drive中存储的文件夹名称(可不设置)
  10. scale: 30, //空间分辨率,单位:米
  11. region: region, //要下载影像的范围
  12. maxPixels: 1e13, //单幅影像输出的最大像元数
  13. fileFormat:"GeoTIFF", //设置影像导出格式,注意GeoTIFF格式需要所有波段存储类型一致(如不能同时存Int16和Int32)
  14. crs: "EPSG:4326" //投影信息,一般是采用默认方式,通常可以设置为EPSG:4326
  15. });
  16. }
  17. //去云处理
  18. function maskL8sr(image) {
  19. var cloudShadowBitMask = (1 << 3);
  20. var cloudsBitMask = (1 << 5);
  21. var qa = image.select('QA_PIXEL');
  22. var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
  23. .and(qa.bitwiseAnd(cloudsBitMask).eq(0));
  24. return image.updateMask(mask);
  25. }
  26. // Applies scaling factors.即选择所需波段
  27. function applyScaleFactors(image) {
  28. var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
  29. var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
  30. return image.addBands(opticalBands, null, true)
  31. .addBands(thermalBands, null, true);
  32. }
  33. //选择要导出的数据类型
  34. var dataset = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') //选择数据集
  35. .filterBounds(roi) //区域筛选
  36. .filterDate('2021-06-01', '2021-10-01'); //时间筛选
  37. dataset = dataset.map(applyScaleFactors);
  38. dataset = dataset.map(maskL8sr);
  39. //对影像进行裁切
  40. var l8Img = dataset.mosaic().clip(roi);
  41. //导出L8影像 Landsat8 all bands loop to Drive
  42. var bands = l8Img.bandNames().getInfo();
  43. for (var i=0; i<l8Img.bandNames().size().getInfo();i++){
  44. print(bands[i]);
  45. Export.image.toDrive({
  46. image: l8Img.select(bands[i]), //设置要输出的影像
  47. fileNamePrefix: "Landsat8_"+bands[i],
  48. //folder: "training01", //设置下载影像在Drive中存储的文件夹名称(可不设置)
  49. scale:30, //空间分辨率,单位:米
  50. description: "Landsat8_"+bands[i], // 设置下载任务tasks的名称
  51. maxPixels:1e13, //单幅影像输出的最大像元数
  52. region:roi.geometry().bounds() //要下载影像的范围
  53. });
  54. }
  55. //可视化参数设置
  56. var visualization = {
  57. bands: ['SR_B4', 'SR_B3', 'SR_B2'],
  58. min: 0.0,
  59. max: 0.3,
  60. gamma:1.4,
  61. };
  62. //添加一个新的显示Landsat8影像的图层
  63. Map.addLayer(l8Img, visualization, 'Landsat8');
  64. //在地图中心显示感兴趣区roi以及缩放
  65. Map.centerObject(roi, 9);
  66. //添加一个显示roi的图层并设置参数
  67. Map.addLayer(roi, {color: "red"}, "roi");

OVER!

最后想说一句,其实 在进行landsat 8 影像数据预处理的时候就可以发现,GEE的一个强大之处在于其可以很方便的自动获取遥感影像,并且直接在上面进行处理和分析。如果只是用作下载影像的话可以说是有点大材小用的了。我们大可直接在平台上进行波段运算,数据研究,分类制图等一系列的操作。笔者也才接触GEE不久,仍在学习中~  吴秋生老师做了很详细的视频介绍,真的很有用!

Google Earth Engine 下载遥感影像——以Landsat 8数据为例相关推荐

  1. Google Earth Engine(GEE)——利用哨兵S2数据进行PCA分析以单景影像分析

    之前有一篇公开的文章是有关单景Landsat8影像的PCA分析: (241条消息) Google earth engine--主成分分析PCA_此星光明2021年博客之星云计算Top3的博客-CSDN ...

  2. GEE(Google Earth Engine)消除影像色差——直方图匹配算法

    色彩校正是处理卫星和航拍图像的重要过程.用于平衡多张图像颜色的常用技术是直方图匹配.虽然该算法已经存在很长时间,但可以大规模使用的免费和开源工具并不多.Mapbox 发布了一个名为rio-hist的开 ...

  3. Google Earth Engine (GEE) ——卫星影像的监督分类(svm)

    问题 GEE 提供哪些机器学习技术? 如何对卫星图像进行监督分类? 如何评估分类器的准确性? 如何手动创建自己的几何图形? 目标 练习查找无云图像和使用手绘几何导入 学习训练和应用分类算法所需的基本功 ...

  4. Google Earth Engine(GEE)——Sentinel-1 和 2 数据的融合,水稻范围识别和水稻种植季节区分地图绘制—马来西亚为例

    最近发现了一个巨牛的人工智能学习网站,点击跳转到网站:前言 – 床长人工智能教程 这次给大家推荐一篇文章,关于水稻识别:使用 GEE 平台中的无监督分类整合 Sentinel-1 和 2 时间序列数据 ...

  5. Google Earth Engine ——在 GEE 中聚合网格化人口数据

    Google Earth Engine 可以轻松计算网格化栅格数据集的统计数据.虽然计算影像数据集的统计数据很容易,但在处理人口数据集时必须特别小心.在这篇文章中,我将概述计算人口栅格和聚合像素的统计 ...

  6. Google earth Engine批量导出影像集合collection

    0.背景 不少朋友问我,GEE该如何批量导出一个数据集. 因此,我把自己常用的导出collection方法写出来,可能有人用得到. 1.数据筛选 首先,在GEE中导入自己需要的矢量边界ROI,这个RO ...

  7. Google Earth Engine(GEE)——基于Landsat的1985-2020年美国西部地区土地分类数据集

    数据介绍: 美国西部的牧场生态系统对气候变化.火灾和其他人为干扰有动态反应.牧场状况.监测.评估和预测(RCMAP)产品旨在通过使用1985-2020年的Landsat图像量化美国西部牧场组成部分的覆 ...

  8. PIE Engine下载高分影像|以高分一号为例

    一.前言 因为前不久用到高分数据,所以来pie上鼓捣了下.体验感一般.下载了影像之后就没怎么用了.行政区矢量边界直接用了PIE的数据集,这个功能还行吧. 二.代码部分 使用了该数据集 fCol = p ...

  9. 基于ENVI的遥感影像解译——以Landsat8数据为例(上)

    遥感影像解译是一种指从图像获取信息的基本过程.即根据各专业(部门)的要求,运用解译标志和实践经验与知识,从遥感影像上识别目标,定性.定量地提取出目标的分布.结构.功能等有关信息,并把它们表示在地理底图 ...

最新文章

  1. 将Excel文件数据库导入SQL Server
  2. Git clone命令出现fatal repository not found错误
  3. ZeroMQ接口函数之 :zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据...
  4. 【特征工程】不容错过的 5 种特征选择的方法!
  5. 线程同步机制有临界区、互斥、信号量优缺点
  6. c++ template(8)模版多态
  7. java模拟火车站买票的过程_Java常用代理
  8. Apache Camel简介
  9. ProjectEuler 5
  10. 大学英语计算机开学考试试题,2018年全国大学英语四级考试阅读理解试题:学习计算机...
  11. 自学Java网站推荐
  12. 口腔行业的隐形冠军,现代牙科集团掘金步入新阶段
  13. C#软件注册与注册机
  14. Android 图片裁剪
  15. 掌握这6个可视化图表,小白也能轻松玩转数据分析
  16. Android Q 开机启动流程
  17. 芯片设计中的时钟与约束
  18. 2020秋季校园招聘深信服、噢易云、绿盟面筋
  19. Python代码中的三大常见“愚形”,你中招了吗?
  20. 解决SQL Server占用服务器内存过高问题

热门文章

  1. javax.net.ssl.SSLPeerUnverifiedException: Certificate for IP doesn't match common name of t
  2. Windows Server 2022
  3. 坦克世界登录服务器未响应,为你操作win7系统坦克世界登录连接不上服务器的方案_...
  4. 人事文件签署单调、重复、繁重?君子签电子合同提升HR工作质效
  5. 深入浅出JVM调优,看完你就懂
  6. Android 开发中一些很有用但你不知道的方法
  7. JAVA之对象的克隆
  8. react 使用注意:
  9. 浮点数在内存中的存储——“C”
  10. 《追风筝的人》读后感2600字