(GEE)2000-2020年黄河流域时序渐变图及高程模型计算 JavaScript版


首先推荐吴秋生老师团队开源的便捷构建网站:适用于地理空间应用的Streamlight
吴秋生老师团队的工具请自行探索。本文讲解基于GEE云开发平台实现,基于modis,黄河数据中心,LandSat7&8数据。
注意在大范围使用landsat数据集会出现黑色断条

高程DEM demo
NDVI综合 demo
折线图demo

一. 选取目标区域

gee提供了点阵获取点位,但是较为麻烦。我选择上传shp矢量区域。该项数据来源于 黄河数据中心 以及 国家冰川冻土沙漠科学数据中心 。请自行申请数据,但其shp,dem文件地理信息有误,最好向师兄师姐要现成的shp,dem文件。。。。

在这里插入图片描述


二. NDVI实现

// 黄河范围
var scope_yellow_river_basin_shp = 'projects/ee-w782353676/assets/yellow-river'
var roi = ee.FeatureCollection(scope_yellow_river_basin_shp)
// 添加Landsat5/7/8 影像集合,添加时间波段
var start_year = 2000
var end_year = 2020
// 数据集可用性: 1999年1月至2022年4月
var dataSet_landSet7_1 = 'LANDSAT/LE07/C02/T1_L2' // Landsat 7 ETM+ Collection 2 大气校正表面反射率。表面反射率
var dataSet_landSet7_2 = "LANDSAT/LE07/C02/T1_TOA" // Landsat 7 ETM+ Collection 2 校准的大气顶部 (TOA) 反射率 大气之巅
var dataSet_landSet7_3 = "LANDSAT/LE07/C02/T1" // Landsat 7 ETM+ 集合 2 个 DN 值,表示缩放、校准的传感器辐射度  原始图像
// 数据集可用性: 2013 年 4 月至今 
var dataSet_landSet8_1 = "LANDSAT/LC08/C02/T1_L2" // Landsat 8 OLI/TIRS Collection 2 大气校正表面反射率。表面反射率
var dataSet_landSet8_2 = "LANDSAT/LC08/C02/T1_TOA" // Landsat 8 OLI/TIRS Collection 2 校准的大气顶部 (TOA) 反射率。 大气之巅
var dataSet_landSet8_3 = "LANDSAT/LC08/C02/T1" // Landsat 8 OLI/TIRS 集合 2 DN 值,表示缩放、校准的传感器辐射度。 原始图像

// =========landSat卫星 大范围区域,出现黑条=====
// function getDataSet(image){
   
   
//   return ee.ImageCollection(image)
//     .filterDate(start_year + '-01-01', end_year + '-12-31') // 筛选出指定时间的影像 
//     .filterBounds(roi) // 筛选出指定范围的影像
//     .filter(ee.Filter.lt("CLOUD_COVER",5))    //云量小于5%;  
// }
// // 合并Landsat 7/8表面反射率数据集
// var landSet7=getDataSet(dataSet_landSet7_1).map(calculateNDVI)
// var landSet8=getDataSet(dataSet_landSet8_1).map(calculateNDVI)
// var dataSet = landSet7.merge(landSet8)

// // 创建一个函数来组合Landsat 7和8的数据集并计算NDVI
// function calculateNDVI(image) {
   
   
//   var sensorId = image.get('SPACECRAFT_ID');
//   // 根据传感器ID确定近红外和红光波段名称 
//   // 在landsat8中SR_B5为近红外反射,SR_B4为红外反射。而在landsat7中SR_B4为近红外反射,SR_B3为红外反射
//   var nirBandName = sensorId === 'LANDSAT_7' ? 'SR_B4' : 'SR_B5';
//   var redBandName = sensorId === 'LANDSAT_7' ? 'SR_B3' : 'SR_B4';
//   // 计算NDVI
//   var ndvi = image.normalizedDifference([nirBandName, redBandName])
//                   .rename('NDVI');

//   // 返回带有NDVI波段的新图像
//   return image.addBands(ndvi);
// }
// ======= modis数据集 ========
var dataSet_modis = "MODIS/061/MOD13A1" // MOD13A1.061 Terra Vegetation Indices 16-Day Global 500m 
function getDataSet(image){
   
   
  return ee.ImageCollection(image)
    .filterDate(start_year + '-01-01', end_year + '-12-31') // 筛选出指定时间的影像 
    .filterBounds(roi) // 筛选出指定范围的影像
}
var dataSet = getDataSet(dataSet_modis).map(function(image){
   
   
  return image.clip(roi)
})
// 可视化NDVI
var palette = [
    'ffffff', 'ce7e45', 'df923d', 'f1b555', 'fcd163', '99b718', '74a901',
    '66a000', '529400', '3e8601', '207401', '056201', '004c00', '023b01',
    '012e01', '011d01', '011301'
  ],
NDVIL=0,
NDVIR=9000,
ndviVisParams = {
   
   
  palette: palette,
  min: NDVIL, 
  max: NDVIR
};
Map.addLayer(dataSet.select('NDVI').mean(), ndviVisParams, 'NDVI');
// 设置地图中心
Map.centerObject(roi, 6); // 自动定位到黄河中心区域,具体级别可能需要调整
// 可选:查看航天器和传感器信息
print('航天器名称:', dataSet.aggregate_array('SPACECRAFT_ID').distinct());
print('传感器名称:', dataSet.aggregate_array('SENSOR_ID').distinct());


// 指北针
var style = require('users/gena/packages:style')
var pt = ee.Geometry.Point([98.87,40.81],'EPSG:4326')
var scale = Map.getScale()
var scaleFactor = 0.2
var width = 2
var northArrow = style.NorthArrow.draw(pt, scale, width, scaleFactor)
Map.addLayer(northArrow, {
   
   }, 'N', false)


// 定义渐变色
// 创建渐变色条图像
var gradientImage = ee.Image.pixelLonLat().select('longitude')
  .multiply(NDVIR - NDVIL)  // 扩展到NDVI范围
  .add(NDVIL);  // 加上最小NDVI值
var gradient = ui.Thumbnail({
   
   
  image: gradientImage,
  params: {
   
   
    bbox: [0, 0, 1, 0.1],
    dimensions: '200x20',
    format: 'png',
    min: NDVIL,
    max: NDVIR,
    palette: palette
  },
  style: {
   
   stretch: 'horizontal', margin: '0px 0px', maxHeight: '30px'}
});


// 创建图例面板并添加到地图
var legendPanel = ui.Panel({
   
   
  widgets: [
    ui.Label('NDVI 图例', {
   
   fontWeight: 'bold'}),
    gradient,
    ui.Panel({
   
   
      widgets: [
        ui.Label('低:0', {
   
   margin: '4px 8px'}),
        ui.Label('高:1', {
   
   margin
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

最难不过坚持丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值