Google Earth Engine(GEE)对Sentinel-2数据进行批量读取并以交互模式依次显示

Google Earth Engine (GEE) 是由谷歌公司开发的众多应用之一。借助谷歌公司超强的服务器运算能力以及与NASA的合作关系,GEE平台将Landsat/Sentinel等可以公开获取的遥感图像数据存储在谷歌的磁盘阵列中,使得GEE用户可以方便的提取、调用和分析海量的遥感大数据资源。

 

本文基于GEE平台,实现对Sentinel-2数据进行批量读取并以交互模式依次显示,示例地点为九寨沟景区附近。代码如下:

(JS)

var S2 = ee.ImageCollection("COPERNICUS/S2");
var roi = China.filterBounds(point).geometry();
//var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_RT_TOA");

var rawCol = S2.filterDate("2017-1-1", "2019-12-31")
               .filterBounds(roi);
//method 3
var rawLayer = null;
var computedIds = rawCol.reduceColumns(ee.Reducer.toList(), ['system:index'])
                        .get('list');
computedIds.evaluate(function(ids) {
  print("computedIds ", ids);
  var total = ids.length;
  var showTitle = ui.Label("", {fontWeight: 'bold'});
  var curIndex = 0;
  var bPlus = ui.Button("+", function() {
    curIndex += 1;
    if (curIndex >= total) {
      curIndex = 0;
    }
    showTitle.setValue(ids[curIndex]);
    showSelectRawImage(ids[curIndex]);
  });
  var bReduce = ui.Button("-", function() {
    curIndex -= 1;
    if (curIndex < 0) {
      curIndex = total - 1;
    }
    showTitle.setValue(ids[curIndex]);
    showSelectRawImage(ids[curIndex]);
  });
  showTitle.setValue(ids[curIndex]);
  showSelectRawImage(ids[curIndex]);
  var main = ui.Panel({
    widgets: [
      ui.Label('click "+" or "-" to move time window', {fontWeight: 'bold'}),
      bPlus, bReduce,
      ui.Label("select date: ", {fontWeight: 'bold'}),
      showTitle
    ],
    style: {width: '200px', padding: '8px'}
  });
  ui.root.insert(0, main);
 
});

function showSelectRawImage(key) {
  if (rawLayer !== null) {
    Map.remove(rawLayer);
  }
  print("show raw image id is: " + key);
  var image = ee.Image(rawCol.filter(ee.Filter.eq("system:index", key)).first().divide(10000));
  rawLayer = Map.addLayer(image, {bands:["B4", "B3", "B2"], min:0, max:0.3}, key);
}


Map.centerObject(roi);

注:①使用前,需要import我国的行政区划文件,其次需要选取例如湖南省长沙市境内的一点(point),最后import导入S2图                 像。

       ②关于我国行政区划文件,分享百度网盘:链接:https://pan.baidu.com/s/1vrT5AmRTX8KmMMbpGtTAcg 
                                                                           提取码:o5vt

       ③使用左侧交互界面的“+”,“-”进行图像切换,图像名显示于控制台

效果:

参考文章:https://www.zhihu.com/people/li-shi-wei-36/posts?page=4

感谢知乎用户:无形的风对于GEE使用的教程!

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用GEEGoogle Earth Engine进行Sentinel-1数据反演土壤湿度的代码示例: 1.导入Sentinel-1数据: ``` var sentinel1 = ee.ImageCollection('COPERNICUS/S1_GRD') .filterBounds(geometry) .filterDate('2018-01-01', '2021-12-31') .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')) .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH')) .filter(ee.Filter.eq('instrumentMode', 'IW')) .filter(ee.Filter.eq('orbitProperties_pass', 'DESCENDING')) .select(['VV', 'VH']) ``` 2.计算土壤湿度: ``` var s1 = ee.Image(sentinel1.first()).clip(geometry) var vh = s1.select('VH') var vv = s1.select('VV') var b = 0.7 //地表粗糙度系数 var alpha = 1 //极化反照率系数 var eps = 0.015 //介电常数 //计算表面散射系数 var gamma_naught_vh = ee.Image.constant(10).multiply(vh).log10().multiply(10).subtract(83) var gamma_naught_vv = ee.Image.constant(10).multiply(vv).log10().multiply(10).subtract(83) //计算比例系数 var rho = gamma_naught_vh.divide(gamma_naught_vv) //计算土壤湿度 var soil_moisture = ee.Image.constant(1.5).multiply(rho.divide(Math.sin(Math.toRadians(40))).add(1)).log10().multiply(-10/b).divide(alpha*eps) ``` 3.可视化土壤湿度: ``` var vizParams = { min: -1, max: 1, palette: ['blue', 'white', 'green'] } Map.addLayer(soil_moisture, vizParams, 'soil moisture') ``` 注意:以上代码仅为示例,具体使用时需要根据实际情况进行修改。同时,需要注意在使用GEE时要了解相关的API和限制条件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值