• GEE:(二)对影像进行重采样


    在使用GEE对影像进行重采样时,主要用到.reproject(crs, crsTransform, scale)函数,下面对该函数的参数以及使用进行介绍。
    img.reproject(crs, crsTransform, scale)
    this:image (Image):
    需要重投影的影像
    crs (Projection):
    重投影时的坐标系
    crsTransform (List, default: null):
    The list of CRS transform values. This is a row-major ordering of the 3x2 transform matrix. This option is mutually exclusive with the scale option, and replaces any transform already on the projection.
    scale (Float, default: null):
    在重投影时可以对分辨率进行设置

    这里将Sentinel-2影像重采样到100m作为例子,在GEE中实现代码如下:

    //去云函数
    function maskS2clouds(image) {
      var qa = image.select('QA60');
    
      // Bits 10 and 11 are clouds and cirrus, respectively.
      var cloudBitMask = 1 << 10;
      var cirrusBitMask = 1 << 11;
    
      // Both flags should be set to zero, indicating clear conditions.
      var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(qa.bitwiseAnd(cirrusBitMask).eq(0));
    
      return image.updateMask(mask).divide(10000);
    }
    
    //导入多边形区域
    var geometry = 
        ee.Geometry.Polygon(
            [[[17.86466765871711, 51.805755132803185],
              [17.86466765871711, 48.51354071088587],
              [24.85197234621711, 48.51354071088587],
              [24.85197234621711, 51.805755132803185]]], null, false);
    
    //导入哨兵2数据
    var image = ee.ImageCollection('COPERNICUS/S2_SR')
                      .filterDate('2017-02-01', '2017-11-30')
                      .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20))
                      .map(maskS2clouds)
                      .median()
                      .clip(geometry);
    
    //输出未重投影时的坐标系以及分辨率
    print('Proj and transform info of image:', image.projection().getInfo())
    print('Pixel size in meters:', image.projection().nominalScale().getInfo())
    
    //输出重投影后的坐标系以及分辨率,这里将分辨率设置为100m
    var reprojected = image.reproject('EPSG:4326',null,100); 
    print('Proj and transform info after reprojection:', reprojected.projection());
    print('Pixel size in meters:', reprojected.projection().nominalScale()); 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    结果:
    在这里插入图片描述

    上述方法其实是对原始影像数据进行重投影,在重投影时将分辨率重新设置了,在官网还给了一种重采样的方法,使用的是.resample()函数,具体实现代码如下:

    // 加载landsat影像
    var landsat = ee.Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20160323');
    
    // 设置展示参数
    Map.setCenter(-122.37383, 37.6193, 15);
    var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3};
    
    //一般最开始加载影像时默认使用的是最邻近像元插值
    Map.addLayer(landsat, visParams, 'original image');
    
    // 对其采用双三次曲线重新采样
    var resampled = landsat.resample('bicubic');
    
    // 展示重采样后的数据
    Map.addLayer(resampled, visParams, 'resampled');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    如果在实际当中,我们有10m和500m的数据,需要统一尺度,就需要对10m的影像进行下采样,可结合.reduceResolution.reproject实现:

    // Load a MODIS EVI image.
    var modis = ee.Image(ee.ImageCollection('MODIS/006/MOD13A1').first())
        .select('EVI');
    
    // Display the EVI image near La Honda, California.
    Map.setCenter(-122.3616, 37.5331, 12);
    Map.addLayer(modis, {min: 2000, max: 5000}, 'MODIS EVI 500 m');
    
    // Get information about the MODIS projection.
    var modisProjection = modis.projection();
    print('MODIS projection:', modisProjection);
    
    // Load and display forest cover data at 30 meters resolution.
    var forest = ee.Image('UMD/hansen/global_forest_change_2015')
        .select('treecover2000');
    Map.addLayer(forest, {max: 80}, 'forest cover 30 m');
    
    // Get the forest cover data at MODIS scale and projection.
    var forestMean = forest
        // Force the next reprojection to aggregate instead of resampling.
        .reduceResolution({
          reducer: ee.Reducer.mean(),
          maxPixels: 1024
        })
        // Request the data at the scale and projection of the MODIS image.
        .reproject({
          crs: modisProjection
        });
    
    // Display the aggregated, reprojected forest cover data.
    Map.addLayer(forestMean, {max: 80}, 'forest cover at MODIS scale 500 m');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
  • 相关阅读:
    es从线上库导出数据并导入开发环境
    springboot疫情防控下基于微信小程序的食堂订餐系统毕业设计源码261620
    PROSAIL模型的植被参数光学遥感反演
    Python + SQLAlchemy操作MySQL数据库(ORM)
    nvidia系统开机自启
    MyEclipse控制台console不停的自动跳动控制台界面,解决方案
    MySQL里的查看操作
    对graalvm、springboot3.0一些新特性的探究
    图的初识·存储结构
    D1 哪吒开发板 上电记录
  • 原文地址:https://blog.csdn.net/qq_44894692/article/details/125492008