当前位置: 首页 > news >正文

GEE SCL掩膜高精度 NDVI 提取教程(10 米分辨率 + SCL 掩膜)——免费提供完整代码

🌍 Google Earth Engine (GEE) 教程

获取并使用高精度数据(10米分辨率,经SCL掩膜处理)来生成特定区域、特定年份的Sentinel-2 NDVI年度合成影像

注意:SCL掩膜版高精度:基于场景分类掩膜,更严格,云去得更干净,但容易漏地物。


一、实验目标

本教程的目标是利用 Google Earth Engine (GEE) 平台,提取指定行政区(以苏州市为例)在 2020–2024 年 的 NDVI(归一化植被指数)年度合成图像,并将结果导出至 Google Drive

通过学习本教程,你将掌握:

  1. 如何导入并筛选自定义行政区边界(shapefile)。
  2. 如何调用 Sentinel-2 Level-2A 表面反射率影像集合。
  3. 如何进行云与阴影掩膜处理。
  4. 如何计算 NDVI 指数。
  5. 如何按年度合成 NDVI 并导出结果。

二、基础知识回顾

1. NDVI 的含义

NDVI (Normalized Difference Vegetation Index) 是一种反映植被覆盖与生长状况的指标,计算公式为:

NDVI = \frac{NIR - RED}{NIR + RED}

其中:

  • NIR:近红外波段(Sentinel-2 中为 B8,波长约 842 nm)
  • RED:红光波段(Sentinel-2 中为 B4,波长约 665 nm)

NDVI 取值范围:

  • -1 ~ 0:多为水体、建筑物等非植被地物
  • 0 ~ 0.2:稀疏植被或裸地
  • 0.2 ~ 0.8:中高密度植被区域

三、数据来源

  • 影像数据集COPERNICUS/S2_SR(Sentinel-2 Level-2A 表面反射率)
  • 空间分辨率:10 米
  • 时间范围:2020–2024 年
  • 研究区边界:用户自上传的江苏省行政区 shapefile 文件(其中包含“苏州市”多边形)

四、操作步骤

步骤 1:导入行政区边界

(①导入上级区域选择所需下级区域②直接导入目标区域)

1. 导入上级区域选择所需下级区域

在 GEE Code Editor 左侧的「Assets」中上传你的 shapefile(包含省、市等行政区边界),上传完成后系统会生成一个资产路径(如:projects/your_project_id/assets/jiangsusheng

在代码中导入该数据,并筛选出 苏州市 区域:

// 导入江苏省行政区边界
var jiangsusheng = ee.FeatureCollection('projects/your_project_id/assets/jiangsusheng');// 按属性字段筛选出苏州市
var suzhou = jiangsusheng.filter(ee.Filter.eq('市', '苏州市'));// 查看结果
print('苏州市区域:', suzhou);
Map.centerObject(suzhou, 9);
Map.addLayer(suzhou, {color: 'red'}, '苏州市边界');

🔹 注意

  • 代码中的 "市" 应替换为你 shapefile 属性表中表示城市名称的字段名。
  • 如果字段名不同,可先运行 print(jiangsusheng.first()) 查看字段名称。
2. 直接导入目标区域

导入步骤相同,在代码中导入该数据

// 直接导入苏州市边界
var suzhou = ee.FeatureCollection('projects/your_project_id/assets/suzhoushi');// 查看结果
print('苏州市区域:', suzhou);
Map.centerObject(suzhou, 9);
Map.addLayer(suzhou, {color: 'blue'}, '苏州市边界');

以下最终代码是以上级区域选择下级区域进行演示。


步骤 2:导入 Sentinel-2 数据集

调用 GEE 官方提供的 Sentinel-2 表面反射率数据:

var s2 = ee.ImageCollection('COPERNICUS/S2_SR');

该数据包含多个波段与质量控制信息,其中 “SCL” 波段可用于识别云、阴影、水体、植被等地物类型。该方法分类识别较为精细所以无关物体的白斑存在会较多。


步骤 3:云与阴影掩膜处理

为了减少云和阴影的干扰,需要根据 SCL(Scene Classification Layer)波段筛除无效像元:

function maskS2WithSCL(image) {var scl = image.select('SCL');// 保留植被(4)、裸地(5)、水体(6)var good = scl.eq(4).or(scl.eq(5)).or(scl.eq(6));return image.updateMask(good).copyProperties(image, ['system:time_start']);
}

步骤 4:计算 NDVI 指数

在每景影像中添加一个 NDVI 波段:

function addNDVI(image) {var ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI');return image.addBands(ndvi);
}

步骤 5:按年度合成 NDVI

对 2020–2024 年的影像分别进行筛选、掩膜、计算 NDVI,并取年度中位值(median composite):

var visParams = {min: -0.2, max: 0.8,palette: ['FFFFFF','CE7E45','DF923D','F1B555','FCD163','99B718','74A901','66A000','529400','3E8601','207401','056201','004C00','023B01','012E01','011D01']
};for (var year = 2020; year <= 2024; year++) {(function(y) {var start = ee.Date.fromYMD(y, 1, 1);var end = ee.Date.fromYMD(y, 12, 31);var col = s2.filterDate(start, end).filterBounds(suzhou).filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 50)).map(maskS2WithSCL).map(addNDVI).select('NDVI');var ndviMedian = col.median().clip(suzhou);// 显示到地图上Map.addLayer(ndviMedian, visParams, 'NDVI ' + y, y === 2024);// 导出任务Export.image.toDrive({image: ndviMedian,description: 'Suzhou_NDVI_' + y,folder: 'GEE_Suzhou_NDVI',fileNamePrefix: 'Suzhou_NDVI_' + y,region: suzhou.geometry(),scale: 10,crs: 'EPSG:4326',maxPixels: 1e13});})(year);
}

完整代码:

// ===================================================================
// GEE 示例:获取苏州市 2020-2024 年的 Sentinel-2 NDVI 年度合成并导出到 Drive
// 使用导入的江苏省行政区 shapefile
// ===================================================================// ---------------------------
// 1) 导入行政区边界数据
// ---------------------------
// 将下方路径替换成你的资产 ID(从截图看应为)
var jiangsusheng = ee.FeatureCollection('projects/your_project_id/assets/jiangsusheng');// 此处以上级区域中选择下级区域进行演示,从属性字段中筛选出“苏州市”
var suzhou = jiangsusheng.filter(ee.Filter.eq('市', '苏州市'));// 打印查看几何是否正确
print('苏州市区域:', suzhou);
Map.centerObject(suzhou, 9);
Map.addLayer(suzhou, {color: 'red'}, '苏州市边界');// ---------------------------
// 2) Sentinel-2 Level-2A 数据集 (表面反射率)
// ---------------------------
var s2 = ee.ImageCollection('COPERNICUS/S2_SR');// ---------------------------
// 3) 云与阴影掩膜函数(基于 SCL 波段)
// ---------------------------
function maskS2WithSCL(image) {var scl = image.select('SCL');// 仅保留 SCL = 4 (vegetation), 5 (bare), 6 (water)var good = scl.eq(4).or(scl.eq(5)).or(scl.eq(6));return image.updateMask(good).copyProperties(image, ['system:time_start']);
}// ---------------------------
// 4) 计算 NDVI
// ---------------------------
function addNDVI(image) {var ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI');return image.addBands(ndvi);
}// ---------------------------
// 5) 循环计算 2020-2024 年 NDVI 年度合成
// ---------------------------
var visParams = {min: -0.2, max: 0.8,palette: ['FFFFFF','CE7E45','DF923D','F1B555','FCD163','99B718','74A901','66A000','529400','3E8601','207401','056201','004C00','023B01','012E01','011D01']
};for (var year = 2020; year <= 2024; year++) {(function(y) {var start = ee.Date.fromYMD(y, 1, 1);var end = ee.Date.fromYMD(y, 12, 31);// 选取苏州市区域内影像var col = s2.filterDate(start, end.advance(1, 'day')).filterBounds(suzhou).filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 50)).map(maskS2WithSCL).map(addNDVI).select('NDVI');var ndviMedian = col.median().clip(suzhou);// 在地图上显示Map.addLayer(ndviMedian, visParams, 'NDVI ' + y, y === 2024 ? true : false);// 导出到 Google DriveExport.image.toDrive({image: ndviMedian,description: 'Suzhou_NDVI_' + y,folder: 'GEE_Suzhou_NDVI',fileNamePrefix: 'Suzhou_NDVI_' + y,region: suzhou.geometry(),scale: 10,crs: 'EPSG:4326',maxPixels: 1e13});})(year);
}// ===================================================================
// 说明:
// 1) suzhou 来源于你上传的 jiangsusheng 矢量资产,确保字段名称为“市”且值为“苏州市”;也可以改为直接导入目标区域
// 2) 每年生成一幅 NDVI 年度合成图像,导出到 Google Drive;
// 3) 导出任务需在右侧 Tasks 面板中点击 “Run” 手动启动;
// 4) 若数据量较大,可以先测试 2020 年单年,确认后再运行循环。
// ===================================================================


五、结果导出说明

  1. 导出位置
    生成的 NDVI 栅格将被保存到 Google Drive 的 GEE_Suzhou_NDVI 文件夹中。

  2. 执行导出任务

    • 在 GEE 右侧「Tasks」面板中,每个年份会出现一个任务。
    • 点击 “Run” → 确认参数 → 等待导出完成。
    • 导出完成后,可在 Google Drive 查看并下载。
  3. 导出格式:GeoTIFF (.tif),坐标系为 WGS84 (EPSG:4326),分辨率 10 米。


六、可视化效果

导出前,GEE 地图界面会显示每一年的 NDVI 合成结果,颜色从浅黄到深绿分别表示:

  • 浅色:植被稀疏或非植被地表
  • 深绿:高密度植被覆盖区


七、常见问题与优化建议

问题可能原因解决方案
地图上不显示苏州市边界属性字段名称不匹配检查 shapefile 的属性表,确认城市字段名
导出任务失败区域范围太大或像元太多可分年份导出,或使用更小研究区
NDVI 结果偏暗云掩膜过严或影像数量不足适当放宽云量阈值(如改为 60%)
Drive 文件夹未出现Drive 授权或同步延迟检查 GEE Drive 授权状态或稍后刷新

如需将 NDVI 栅格进一步在 ArcGIS 或 QGIS 中叠加分析,只需在 Google Drive 下载 .tif 文件后导入即可。


转载吱一声~

http://www.dtcms.com/a/594623.html

相关文章:

  • 网站群建设公司排行榜网站后端用什么语言
  • 网站域名是网站架构吗邯郸网站建设怎么开发
  • 网站栏目一般有哪些广州市建设局网站
  • 代码随想录 Q88.跳跃游戏
  • 网站开发制作步骤图微信公众号的微网站怎么做的
  • 策略梯度与值函数方法进行联合能解决什么问题
  • 无锡网站推广$做下拉去118cr广元 网站建设
  • 公司网站域名到期了去哪里缴费做刀网站
  • 爱站网排行榜wordpress用户角色权限管理
  • 网校网站毕业设计的方案毕设给学校做网站
  • 企业三要素验证API——企业数字化业务开展的保障
  • 专业系统网站百度产品推广
  • Android/Linux的FEC浅析
  • 网站开发好还是app好百度问答seo
  • 重庆巴南区网站建设如何做网站的seo
  • Vue 3 超强二维码识别:多区域/多尺度扫描 + 高级图像处理
  • 网站建设模块需求分析管理咨询公司一般是做什么的
  • 0511城市建设网站棚户区改造wordpress 崩溃
  • 在线制作简历网站上海贸易公司有哪些
  • 网站建设灬金手指科杰汽油价格最新调整
  • 创口贴网站模板wordpress+左侧导航
  • 网站开发工作程序怎么写个人养老保险缴费标准
  • 做推广的网站带宽需要多少湛江自助建站软件
  • MES系统+3D一览通应用,研发制造无缝对接,实现车间生产数字化
  • 国内工业设计网站网站规划建设方案模板
  • 苏州手机网站建设服务wordpress js 页脚
  • wordpress子目录网站网站建设有哪些家
  • 深圳企业网站制作设计方案wordpress防36kr
  • 淘宝网站基础建设 托管网页设计从入门到精通
  • 网站开发常用框架开发小程序好的公司