利用GEE获取区域NDVI

GEE与NDVI的解释

1、GEE

Google Earth Engine(GEE)是由谷歌开发的一款强大的地理信息处理平台,它可以用于大规模地理空间数据的存储、分析和可视化。以下是 GEE 的一些主要特点:
大规模计算能力:GEE 提供了大规模并行计算的能力,允许用户在全球范围内处理庞大的地理信息数据集。
多源数据集集成:GEE 整合了来自多个卫星、传感器和数据提供商的地理信息数据,包括遥感影像、气象数据、地形数据等。
JavaScript 编程接口:用户可以使用 JavaScript 编写脚本,利用 GEE 提供的丰富 API 进行地理空间数据的处理和分析。
遥感数据处理:GEE 提供了丰富的遥感图像处理功能,包括图像合成、分类、变化检测等。
空间分析:GEE 支持各种空间分析方法,如缓冲区分析、空间查询等。
时序数据分析:GEE 可以处理时间序列数据,方便用户进行时序分析,比如 NDVI 时间序列分析等。
可视化和图表展示:GEE 提供了地图显示功能,可以将分析结果以地图或图表的形式展示出来。
共享和发布:用户可以将自己的脚本、数据和分析结果共享给其他人,也可以将结果发布为 Web 应用。
免费访问和使用:GEE 提供了免费的基本访问权限,同时也有一些高级功能需要购买额外的许可证。
GEE 在许多领域都有广泛的应用,包括环境科学、农业、林业、城市规划等。它为研究人员、政府部门、环保组织等提供了一个强大的工具,用于处理和分析地理信息数据,从而支持科学研究和环境保护工作。

2、NDVI

归一化差异植被指数(Normalized Difference Vegetation Index,NDVI)是一种用于评估植被覆盖程度和生长状况的遥感指数。它是由美国科学家罗伯特·朗根(Robert R. Ranson)提出的。
NDVI 利用遥感影像中的红光和近红外波段的反射率来计算,公式如下:
在这里插入图片描述
其中:NIR 代表近红外波段的反射率。RED 代表红光波段的反射率。
NDVI 值的范围从 -1 到 +1,其解释如下:
-1 到 0:代表非常稀疏的植被或无植被区域,比如沙漠、岩石等。
0:代表没有植被,比如水体、城市等非植被区域。
0 到 +1:表示植被覆盖度增加,值越高表示植被越茂盛,+1 表示非常茂盛的植被。

通常来说,以下是一些 NDVI 值的一般解释:
-1.0:无植被
0.0 - 0.1:稀疏植被
0.2 - 0.5:中等植被
0.6 - 0.9:浓密植被
+1.0:非常浓密的植被
NDVI 在农业、林业、生态学、地质学等领域都有广泛的应用,可以用于监测植被的生长状况、变化检测、土地利用分类等。

利用GEE获取区域NEVI——以孔雀河流域为例

GEE编程界面:
在这里插入图片描述
利用MODIS卫星获取NVDI数据代码如下,shp文件首先需要上传到Assests中,这段代码会生成指定区域的NDVI的tif文件,文件会保存在谷歌云盘中:

// 加载指定的 Shapefile
var shp = ee.FeatureCollection('projects/ee-pengbr3003/assets/Kongquehe_watershed');

// 定义一个函数,用于计算NDVI并将其作为属性添加到Feature中
var addNDVI = function(feature) {
  var geometry = feature.geometry();
  var startDate = '2021-01-01';  // 替换为开始日期
  var endDate = '2021-12-31';  // 替换为结束日期

  var modisNDVI = ee.ImageCollection('MODIS/006/MOD13A1')
    .filterDate(startDate, endDate)
    .select('NDVI');

  var ndvi = modisNDVI.mean().clip(geometry);

  return feature.set({NDVI: ndvi});
};

// 使用函数处理Shapefile中的每个Feature
var shpWithNDVI = shp.map(addNDVI);

// 合并所有 NDVI 图像
var ndviImages = shpWithNDVI.aggregate_array('NDVI');
var mergedNDVI = ee.ImageCollection.fromImages(ndviImages).toBands();

// 导出为 GeoTIFF
Export.image.toDrive({
  image: mergedNDVI,
  description: 'merged_ndvi_export',  // 导出文件的名称
  folder: 'GEE_exports',  // 导出文件的目录
  region: shp.geometry().bounds(),  // 导出区域为 Shapefile 区域的外接矩形
  scale: 250,  // 设置输出图像的分辨率(以米为单位)
  crs: 'EPSG:4326'  // 设置输出图像的坐标参考系统
});

// 显示 NDVI 结果
Map.addLayer(mergedNDVI, {min: -10000, max: 10000, palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01', '012E01', '011D01', '011301']}, 'Merged NDVI');

在这里插入图片描述
QGIS展示tif文件,最小值-657,最大值4623:
在这里插入图片描述
归一化NDVI代码,波段值/10000:

// 加载指定的 Shapefile
var shp = ee.FeatureCollection('projects/ee-pengbr3003/assets/Kongquehe_watershed');

// 定义一个函数,用于计算归一化 NDVI 并将其作为属性添加到 Feature 中
var addNormalizedNDVI = function(feature) {
  var geometry = feature.geometry();
  var startDate = '2021-01-01';  // 替换为开始日期
  var endDate = '2021-12-31';    // 替换为结束日期

  var modisNDVI = ee.ImageCollection('MODIS/006/MOD13A1')
    .filterDate(startDate, endDate)
    .select('NDVI');

  var ndvi = modisNDVI.mean().clip(geometry);
  
  // 计算归一化 NDVI
  var normalizedNDVI = ndvi.divide(10000); // 归一化到 -1 到 1 的范围
  
  return feature.set({Normalized_NDVI: normalizedNDVI});
};
// 使用函数处理 Shapefile 中的每个 Feature
var shpWithNormalizedNDVI = shp.map(addNormalizedNDVI);

// // 合并所有归一化 NDVI 图像
var normalizedNDVIImages = shpWithNormalizedNDVI.aggregate_array('Normalized_NDVI');
var mergedNormalizedNDVI = ee.ImageCollection.fromImages(normalizedNDVIImages).toBands();

// 导出为 GeoTIFF
Export.image.toDrive({
  image: mergedNormalizedNDVI,
  description: 'merged_normalized_ndvi_export',  // 导出文件的名称
  folder: 'GEE_exports',  // 导出文件的目录
  region: shp.geometry().bounds(),  // 导出区域为 Shapefile 区域的外接矩形
  scale: 250,  // 设置输出图像的分辨率(以米为单位)
  crs: 'EPSG:4326'  // 设置输出图像的坐标参考系统
});

// 显示归一化 NDVI 结果
Map.addLayer(mergedNormalizedNDVI, {min: -1, max: 1, palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01', '012E01', '011D01', '011301']}, 'Merged Normalized NDVI');

QGIS展示,最小值-0.065,最大值0.46:
在这里插入图片描述
我们可以利用R语言改变tif文件的波段值范围同样实现归一化,代码如下:

library(raster)
library(sp)

# 打开.tif文件
input_file <- "merged_ndvi_export.tif"
output_file <- "merged_normalized_ndvi_export.tif"
raster_data <- raster(input_file)

# 获取波段的最小值和最大值
min_value <- minValue(raster_data)
max_value <- maxValue(raster_data)

# 设置新的最小值和最大值范围
new_min <- min_value/10000
new_max <- max_value/10000

# 调整波段范围
adjusted_raster <- ((raster_data - min_value) / (max_value - min_value)) * (new_max - new_min) + new_min

# 保存修改后的.tif文件
writeRaster(adjusted_raster, output_file, format="GTiff")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

彭博锐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值