GEE学习笔记:在Google Earth Engine(GEE)中计算坡度、坡向、山体阴影

       本次实验使用的 SRTM 数字高程数据是 30 米分辨率数据,对某地区的坡度、坡向和山体阴影信息进行提取。    

目录

1、获取SRTMGL1_003 数据     

2、计算地形特征

3、分别提取各地形因子

4、完整代码


1、获取SRTMGL1_003 数据     

        SRTM 数字高程数据,是一种航天飞机雷达地形测绘 SRTM 数据,是由NASA、国防部国家测绘局(NIMA)以及德国与意大利航天机构联合测量得到的,覆盖 60°N 到 56°S 之间大部分区域的雷达影像数据,覆盖地球陆地范围80%以上。该数据可以免费获取,具有现实性强的特点。

var roi = table;//table为自己上传的矢量数据
Map.centerObject(roi,7);

//获取SRTMGL1_003 数据
var dataset = ee.Image('USGS/SRTMGL1_003')
                .clip(roi);

2、计算地形特征

var terrain = ee.Algorithms.Terrain(dataset);
Map.addLayer(terrain,{},"terrain");
print("terrain",terrain);

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YGl5oSf5Zyw5a2m5bCP56uZ,size_12,color_FFFFFF,t_70,g_se,x_16

        在【Console】下可查看ee.Algorithms.Terrain()所得结果有四个波段,分别表示海拔、坡度、坡向、山体阴影。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YGl5oSf5Zyw5a2m5bCP56uZ,size_19,color_FFFFFF,t_70,g_se,x_16

3、分别提取各地形因子

//海拔
var elevation = terrain.select('elevation');
Map.addLayer(elevation,{},"elevation")

//坡度
var slope = terrain.select('slope');
Map.addLayer(slope,{},"slope")

//坡向
var aspect = terrain.select('aspect');
Map.addLayer(aspect,{},"aspect")

//山体阴影
var hillshade = terrain.select('hillshade');
Map.addLayer(hillshade,{},"hillshade")

所得结果图如下:

 elevation:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YGl5oSf5Zyw5a2m5bCP56uZ,size_13,color_FFFFFF,t_70,g_se,x_16

 slope:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YGl5oSf5Zyw5a2m5bCP56uZ,size_13,color_FFFFFF,t_70,g_se,x_16

 aspect:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YGl5oSf5Zyw5a2m5bCP56uZ,size_12,color_FFFFFF,t_70,g_se,x_16

 hillshade:
watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YGl5oSf5Zyw5a2m5bCP56uZ,size_12,color_FFFFFF,t_70,g_se,x_16

4、完整代码

var roi = table;//table为自己上传的矢量数据
Map.centerObject(roi,7);

//获取SRTMGL1_003 数据
var dataset = ee.Image('USGS/SRTMGL1_003')
                .clip(roi);
var terrain = ee.Algorithms.Terrain(dataset);
Map.addLayer(terrain,{},"terrain");
print("terrain",terrain);
//海拔
var elevation = terrain.select('elevation');
Map.addLayer(elevation,{},"elevation")

//坡度
var slope = terrain.select('slope');
Map.addLayer(slope,{},"slope")

//坡向
var aspect = terrain.select('aspect');
Map.addLayer(aspect,{},"aspect")

//山体阴影
var hillshade = terrain.select('hillshade');
Map.addLayer(hillshade,{},"hillshade")

  • 14
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
以下是使用Google Earth Engine获取逐日NDVI的代码示例: ```javascript // 设置ROI var roi = ee.Geometry.Rectangle([xmin, ymin, xmax, ymax]); // 设置起始和结束日期 var startDate = ee.Date('2019-01-01'); var endDate = ee.Date('2019-12-31'); // 加载MODIS数据 var modis = ee.ImageCollection('MODIS/006/MOD13A1') .filterBounds(roi) .filterDate(startDate, endDate) .select('NDVI'); // 定义函数计算每个图像的年份和日数 var addDate = function(image) { var doy = image.date().getRelative('day', 'year'); return image.addBands(doy).addBands(image.date().get('year')); }; // 对图像集应用函数 var modisWithDate = modis.map(addDate); // 定义函数计算每个年份和日数的平均NDVI值 var reduceDaily = function(imageCollection, year, doy) { var filtered = imageCollection.filter(ee.Filter.calendarRange(year, year, 'year')) .filter(ee.Filter.calendarRange(doy, doy, 'day_of_year')); return filtered.mean().set('year', year).set('doy', doy); }; // 创建一个二维数组,其第一维表示年份,第二维表示一年的日数 var years = ee.List.sequence(startDate.get('year'), endDate.get('year')); var days = ee.List.sequence(1, 365); // 对所有年份和日数应用reduceDaily函数 var dailyNDVI = ee.ImageCollection.fromImages(years.map(function(y){ return days.map(function(d){ return reduceDaily(modisWithDate, y, d); }); }).flatten()); // 打印输出结果 print(dailyNDVI); ``` 在上述代码,首先定义了一个感兴趣区域(ROI),然后加载了2000年至今的MODIS NDVI数据,并对其进行了筛选。接着定义了两个函数,一个函数用于向每个图像添加年份和日数作为带宽,另一个函数用于计算每个年份和日数的平均NDVI值。最后,将所有年份和日数应用到reduceDaily函数,生成逐日的NDVI值。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值