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()); 

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

上述方法其实是对原始影像数据进行重投影,在重投影时将分辨率重新设置了,在官网还给了一种重采样的方法,使用的是.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');

如果在实际当中,我们有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');
是的,Google Earth Engine(GEE)提供了重采样功能,可以将影像数据从一个分辨率/尺度转换为另一个分辨率/尺度。重采样可以根据需要增加或减少影像数据的空间分辨率,使其与其他数据集或分析需求匹配。 在GEE中,可以使用`resample()`函数来执行重采样操作。该函数接受两个参数:目标分辨率和重采样方法。目标分辨率可以是具体的数值,也可以是一个影像对象。重采样方法可以是以下选项之一: - `bilinear`:双线性插值 - `bicubic`:双三次插值 - `nearest`:最近邻插值 以下是使用GEE进行重采样的示例代码: ```javascript // 加载影像 var image = ee.Image('LANDSAT/LC08/C01/T1/LC08_123032_20140515'); // 设置目标分辨率 var targetResolution = 30; // 目标分辨率为30米 // 执行重采样 var resampledImage = image.resample('bilinear').reproject({ crs: image.projection(), scale: targetResolution }); // 打印原始和重采样后的分辨率 print('原始分辨率:', image.projection().nominalScale()); print('重采样后的分辨率:', resampledImage.projection().nominalScale()); // 可以继续进行其他操作,如计算指标或导出数据 ``` 上述代码将加载一个Landsat 8影像,然后使用`resample()`函数将其重采样为30米的分辨率。您可以根据自己的需求调整目标分辨率和重采样方法。重采样后的影像可以用于进一步的分析、计算指标或导出数据。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GISerQ.

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值