Sentinel-2 cloud free 镶嵌 of Europe in one 分ute with Google Earth Engine

欧洲无云Sentinel-2马赛克

今天,我将向您简要介绍Google Earth Engine,并向您展示如何使用Sentinel-2数据创建欧洲的无云马赛克 in just one 分ute! Yes, literally one 分ute!

Google Earth Engine是“计算平台,允许用户在Google上运行地理空间分析’s infrastructure.” 这意味着你不’您不必自己下载任何数据,并且可以使用Google的计算能力对笔记本电脑,计算机甚至手机上的各种可用卫星图像进行高速数据分析。

1.在报名 earthengine.google.com

不用担心’如果您是研究人员,或者只是想探索Google Earth Engine的可能性和功能,则可以免费获得。但是,如果您要将其用于商业目的,则应首先与Goolge联系。

2.前往 code.earthengine.google.com

Google Earth Engine提供了两个界面。在我们的案例研究中,我们将使用 代码编辑器界面。通过此界面,您可以为我们提供各种已经存在的代码块,这些代码块将帮助您进行分析和处理各种卫星图像。您可以找到Google Earth Engine API的简短介绍 这里。

下图显示了代码编辑器的主要功能:

Google Earth Engine代码编辑器(由Google提供)

Google Earth Engine代码编辑器(由Google举例)

3.从脚本管理器中选择一个现有脚本

从左侧的脚本管理器中选择 “Filtered Composite”. 该脚本将面范围作为输入:

var polygon = ee.Geometry.Polygon([[
 [-109.05, 37.0], [-102.05, 37.0], [-102.05, 41.0], // colorado
 [-109.05, 41.0], [-111.05, 41.0], [-111.05, 42.0], // utah
 [-114.05, 42.0], [-114.05, 37.0], [-109.05, 37.0]]]);

然后选择从2000年4月到2000年7月的所有可用Landsat 7场景:

var collection = ee.ImageCollection('LE7_L1T')
 .filterDate('2000-04-01', '2000-07-01')
 .filterBounds(polygon);

第三步,计算所有这些图像的中值并将其显示在地图上:

// Select the median pixel.
var median = collection.median();

//选择红色,绿色和蓝色带。
var result = median.select('B3', 'B2', 'B1');
Map.addLayer(结果,{获得:'1.4, 1.4, 1.1'});
Map.setCenter(-110, 40, 5);

结果是在科罗拉多和丹佛上的Landsat 7镶嵌图。您可以通过单击 “Run” 按钮。计算仅需几秒钟!惊人!

4.突破极限–欧洲Sentinel-2云免费。这需要多长时间?

让’测试整个欧洲大陆需要花费多长时间。让我们改用Sentinel-2!
猜猜需要多长时间?这是我所做的代码改编:

欧洲多边形:

var geometry = /* color: #d63000 */ee.Geometry.Polygon( [[[-26.60888671875, 66.01801815922043], 
[-18.1494140625, 32.565333160841035], [15.954649288064843, 35.39010560236367], [44.80224609375, 36.756490329505176], 
[43.59375, 70.85188122123132], [11.88720703125, 73.23937702441908]]]);

var polygon = geometry;

这次我们需要Sentinel-2数据,所以让’s change “LE7_L1T” to “COPERNICUS/S2”并指定从2016年4月到2016年12月的时间范围:

Voila! We are done! How long did it take? About a 分ute!! Wow, stunning! Here the result:

欧洲无云Sentinel-2马赛克

欧洲无云Sentinel-2马赛克

 

关于作者

马丁出生于捷克共和国,就读于维也纳自然资源与生命科学大学。他目前在GeoVille(一家位于奥地利的地球观测公司)工作,专门从事土地监测。他的主要兴趣是:开源应用程序,例如R,(地理空间)统计和数据管理,Web映射和可视化。他喜欢旅行,寻宝,摄影和运动。

16条留言

您可以在这篇文章中发表评论。


  • 您好,恭喜!

    我可以在印度地区使用此代码吗?

    谢谢
    拉吉

    拉杰·库玛·辛格 3年前 回复


    • 谢谢!您可以在任何区域使用它。您只需要调整多边形变量的范围即可。

      马丁 3年前 回复


  • By taking the 分imum value an issue is that you get the cloud shadows.

    西蒙 3年前 回复


    • 嗨,西蒙!感谢您的评论!
      你是绝对正确的!这篇文章旨在作为概念证明,并显示了惊人的GEE的计算潜力。
      对于完全没有云和阴影的马赛克,当然需要更高级的算法。 ðŸ〜‰
      但是,我仍然感到震惊“min”表现出色。我期待更多的人工制品!
      干杯

      马丁

      顺便说一句:我非常喜欢您的博客以及您在“series temporelles”

      马丁 3年前 回复


  • 亲爱的西蒙,
    非常感谢您的演讲。
    请问,如何给多边形分配坐标?
    最好,

    弗雷迪·阿格蒂 3年前 回复


    • 亲爱的弗雷迪,
      您指的是哪个演示文稿?
      回答你的问题;
      您可以直接更改变量多边形中的坐标(如果知道的话):
      var geometry = / * color:#d63000 * / ee.Geometry.Polygon([[[--26.60888671875,66.01801815922043],
      [-18.1494140625,32.565333160841035],[15.954649288064843,35.39010560236367],[44.80224609375,36.756490329505176],
      [43.59375,70.85188122123132],[11.88720703125,73.23937702441908]]]);

      或者,如果您想绘制多边形,则可以通过单击变量旁边的小垃圾桶来删除现有的几何变量,然后在地图上简单地绘制一个新的多边形。

      如果您需要任何帮助,请告诉我。

      马丁 3年前 回复


  • 嗨,马丁,

    我们已根据您的指示调整了我的兴趣范围,并且效果很好!
    现在,导出组成马赛克的所有S2图像的最佳方法是什么?

    我还想导出4个频段(B8,B4,B3和B2),而不是3个。

    谢谢

    米歇尔 3年前 回复


    • 您要导出最终的镶嵌图还是构成镶嵌图的所有图像?

      马丁 3年前 回复


      • 我想一次或在瓷砖PLZ中导出巴基斯坦哨兵-2 RGB马赛克,请帮助我无缝拼接

        伊兹瓦 3年前 回复


        • 嘿!
          首先,您需要在goolge地球引擎内所需的感兴趣区域(巴基斯坦)周围绘制多边形。
          其次,您需要导出可视化文件。我通常按​​以下方式将文件导出到google驱动器(只需在脚本底部添加代码行,并在需要时对其进行调整):


          // Export the image, specifying scale and region.
          Export.image.toDrive({
          image: imagename, //replace with your image name variable
          description: 'pakistan_mosaic',
          scale: 10,
          maxPixels: 1e9,
          region: geometry, //polygon name that you have drawn at step 1
          folder:'mosaic_pakistan',
          crs: "EPSG:3857"
          });

          马丁 3年前 回复


      • 想要导出带有云遮罩的阿富汗Sentinal -2 RGB马赛克,您能帮我如何下载吗?不幸的是,我无法使用此指南。
        谢谢

        阿卜杜勒·巴西尔(Abdul Basir Mahmoodzada) 1年前 回复


  • 谢谢你,这对我有帮助。有没有一种方法可以计算选定区域的NDVI?如果是这样,您可以花一些时间来编写代码吗?

    柳比萨·朱罗斯维奇 2年前 回复


  • 干得好!
    我可以问一个有关Setinel-2,L-1C产品的大气校正的问题吗?
    是否有任何代码’Google地球引擎中的大气校正?
    谢谢

    何中华 2年前 回复


  • 你好
    I’我已经尝试过您的脚本,但是却收到了此消息–>第1层:图层错误:Image.select:图案‘B4’没有任何乐队

    你有什么建议吗?
    这是我完整的脚本:

    var geometry =
    / *颜色:#0b4a8b * /
    / * displayProperties:[
    {
    “type”: “rectangle”
    }
    ] * /
    ee.Geometry.Polygon(
    [[[94.005859375,8.059229627200192],
    [94.005859375,-12.64033830684679],
    [142.697265625,-12.64033830684679],
    [142.697265625,8.059229627200192]],null,false);

    var kotak =几何

    var collection = ee.ImageCollection(‘COPERNICUS/S2_SR’)
    .filterDate(‘2016-04-01’, ‘2018-12-31’)
    .filterBounds(kotak);

    var 分 = collection.min();

    //选择红色,绿色和蓝色带。
    var result = 分.select(‘B4’, ‘B3’, ‘B2’);

    Map.addLayer(结果,{获得:‘0.1, 0.1, 0.1’, scale:20});
    Map.setCenter(118,0,4);

    巴尤(Bayu Prayudha)- 2年前 回复


  • 嗨,谢谢你上面的脚本。我只是将坐标替换为南美圭亚那。现在,我想为哨兵2,波段b2,b4,b8和b11创建一个云掩码文件。最后,我需要计算NDVI。但是,我很难理解使用Sentinel 2进行云掩码的概念。您能解释一下吗?

    苏西

    苏西·刘易斯 2年前 回复


  • 嗨,谢谢您的介绍。我想知道如何获得第二个或第三个最小值而不是最小值?

    于龙龙 1年前 回复


发表回复

*