Google Earth Engine谷歌地球引擎GEE栅格数据图层可视化设置代码嵌入

  本文主要对GEE中的数据图层可视化代码嵌入操作加以介绍。本文是谷歌地球引擎(Google Earth Engine,GEE)系列教学文章的第四篇,更多GEE文章请参考专栏:GEE学习与应用(https://blog.csdn.net/zhebushibiaoshifu/category_11081040.html)。

  可视化代码嵌入,即将图层可视化选项在代码中直接配置,不需要手动进行数据可视化的调整;同时可以保证每一次运行代码,图层可视化结果都是我们所设定的配置,而不是GEE默认的配置。

  首先,依据第二篇GEE教学博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/117296956)中内容,我们将Landsat 8 Collection 1 Tier 1的大气表观反射率TOA Reflectance产品导入GEE;同时依据第三篇GEE教学博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/117390431)中内容,我们将美国人口普查局United States Census Bureau)的2018年主要合法边界划分数据TIGER: US Census Counties 2018导入GEE;并对二者做好重命名。

在这里插入图片描述
  接下来,我们基于第二篇GEE教学博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/117296956)与第三篇GEE教学博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/117390431)中内容,对刚刚导入的数据加以时间筛选、平均值合成、空间区域裁剪等,同时将图层导入到地图中。

var landsat_8_202007_USA=landsat_8.filterDate('2020-07-01','2020-07-31').mean().clip(county);
Map.addLayer(landsat_8_202007_USA,{},'USA_Landsat');

  所得结果如下图所示。这里需要注意,下图最后一句代码忘记加分号了。

在这里插入图片描述

  可以看到,上图中的栅格图层是黑、白、灰色系的,我们可以在代码中对其波段配色方案加以调整。在Map.addLayer()函数中的第二个参数位置,按照如下方式进行配置;而其它两个参数,通过之前的教学文章我们已经知道其分别代表具体图层图层显示在地图中时的名称

Map.addLayer(landsat_8_202007_USA,{bands:['B4','B3','B2']},'USA_Landsat');

在这里插入图片描述

  此时可以看到,地图中图层依然是灰白色系,这是由于我们没有调整其拉伸情况,导致眼睛看上去彩色并不明显导致的。在地图右上角的“Layers”勾选框中,我们首先对拉伸情况加以调整。此时我们还可以看到,图像的RGB波段通过我们所输入的代码已经有了自动的更新。

在这里插入图片描述

  在这里,我们配置好图像的拉伸情况,一开始先随意选择一种拉伸即可。

在这里插入图片描述

  查看地图,可以看到拉伸后的图层相对而言真彩色已经较为明显。但是依然不是很突出,我们可以继续修改拉伸的程度。

在这里插入图片描述

  提升拉伸程度,可以看到图层真彩色已经较为明显。

在这里插入图片描述

  我们就选择这种方式,记录此时图像的像素范围,并将其按照如下方式嵌入到代码中:

Map.addLayer(landsat_8_202007_USA,{bands:['B4','B3','B2'],min:[-0.0152],max:[0.4054]},'USA_Landsat');

  下图中的红色即为图像像素范围所在的位置。

在这里插入图片描述

  执行代码可以发现,图层的可视化配置在每一次代码执行后都会自动形成,不需要我们手动在地图的右上角“Layers”处加以操作了。

在这里插入图片描述

  以上是多波段栅格数据的可视化代码,接下来我们再以单波段灰度图像进行操作。在GEE搜索框中输入terrain,选择GMTED2010:Global Multi-resolution Terrain Elevation Data 2010数据,将其导入地图中并将这一变量重命名。我们以这一DEM单波段栅格图层为例加以介绍。

在这里插入图片描述

  将这一图层在地图中显示,并将地图中的图层名称显示为DEM;其中,{}表示可视化参数这里暂时不放入任何内容。

Map.addLayer(DEM,{},"DEM");

在这里插入图片描述

  可以看到,这一DEM图层的默认可视化情况呈现出无法较好分辨的灰白图像。我们首先在地图图层中调整其拉伸参数,同样也是随意设置一个拉伸即可。

在这里插入图片描述

  调整完毕后,将对应的像素取值范围放入代码中:

Map.addLayer(DEM,{min:[-770.68],max:[1304.73]},"DEM");

  执行代码,可以看到每次执行代码后图层的可视化情况都同样固定为我们所设定的样式。

在这里插入图片描述

  此外,我们还可以在代码中嵌入单波段栅格图像的“Palette”信息。首先依然是在“Layers”中手动设定其Palette信息。

在这里插入图片描述

  需要注意,设定其Palette信息时,最好同时调整拉伸的设置,从而找到一个较为合适的“Palette”设置与拉伸设置组合。

在这里插入图片描述

  随后,首先将Palette中的设置放入代码。点击下图所示按钮。

在这里插入图片描述

  复制得到的16进制颜色代码。

在这里插入图片描述

  将其放入Map.addLayer()函数中第二个参数(可视化参数)中。

在这里插入图片描述

  同时记得按照调整后的拉伸设置修改minmax的值。

Map.addLayer(DEM,{min:[-251.82],max:[785.88],palette:["63ff14","41f6ff","5f37ff","e033ff","ff3f7d"]},"DEM");

在这里插入图片描述

  随后执行代码,可以看到每次运行代码,得到的DEM图层都是较易分辨的彩色图层。

  同时,我们还可以采用如下的方法,即将Map.addLayer()函数中第二个参数(可视化参数)首先存储为一个变量,随后执行Map.addLayer()函数时,将这一变量放到第二个参数的位置即可。

var dem_vis={
  min:[-251.82],
  max:[785.88],
  palette:["63ff14","41f6ff","5f37ff","e033ff","ff3f7d"]
}
Map.addLayer(DEM,dem_vis,"DEM");

  执行上述代码,可以看到效果与前述内容一致。

在这里插入图片描述

欢迎关注公众号/CSDN/知乎/微博:疯狂学习GIS

在这里插入图片描述

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
以下是使用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值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

疯狂学习GIS

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

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

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

打赏作者

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

抵扣说明:

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

余额充值