GEE(Google Earth Engine)——使用 NASA NEX-DCP30 数据集创建投影的可视化(美国加利福尼亚州圣华金流域的气候)

简介: GEE(Google Earth Engine)——使用 NASA NEX-DCP30 数据集创建投影的可视化(美国加利福尼亚州圣华金流域的气候)


此次案例,又两个官网的数据和配色连接:

https://cds.nccs.nasa.gov/wp-content/uploads/2014/04/NEX-DCP30_Tech_Note_v0.pdf

http://www.nasa.gov/content/nasa-supercomputer-generates-closer-look-at-future-climate-conditions-in-us


NASA NEX-DCP30 数据集由美国本土的缩减气候情景组成,这些情景源自在耦合模型比对项目第 5 阶段(CMIP5,参见 Taylor 等人,2012 年)下进行的总环流模型 (GCM) 和跨为政府间气候变化专门委员会第五次评估报告 (IPCC AR5) 制定的四种温室气体排放情景,称为代表性浓度路径(RCP,见 Meinshausen 等人,2011 年)。这些数据集的目的是提供一组高分辨率、偏差校正的气候变化预测,可用于评估气候变化对更细尺度气候梯度敏感过程的影响以及局部地形对气候条件的影响。


该数据集包含涵盖 1950 年至 2005 年(回顾性运行)和 2006 年至 2099 年(预期运行)期间的月度预测。它包括从可用于 pr、tasmin 和 tasmax 波段的所有模型运行中为每个 RCP 计算的集合统计数据。


NEX-DCP30 由气候分析小组和 NASA 艾姆斯研究中心使用 NASA Earth Exchange 编写,并由 NASA 气候模拟中心 (NCCS) 分发。

此次案例是对于气候的分析,主要是美国加州气候变化的一个可视化,时间序列的过程分析。


代码:

var geometry1 = /* color: #98ff00 */ee.Geometry.MultiPoint();
//影像的选择波段选择和时间筛选
var base_collection = ee.ImageCollection('NASA/NEX-DCP30_ENSEMBLE_STATS')
    .select(['tasmax_median', 'tasmax_quartile25', 'tasmax_quartile75'])
    .filterDate('2010-01-01', '2100-01-01');
//设置一个变量来作为时间的筛选这里从7月开始
var january = base_collection.filter(ee.Filter.calendarRange({
  start: 7,
  field: 'month'
}));
// 讲K温度转化为摄氏度C然后复制属性
january = january.map(function(image) {
  return image.subtract(273.15)
      .copyProperties(image, ['system:time_start', 'scenario']);
});
//对数据进行筛选
var rcp26 = january.filterMetadata('scenario', 'equals', 'rcp26');
var rcp45 = january.filterMetadata('scenario', 'equals', 'rcp45');
var rcp60 = january.filterMetadata('scenario', 'equals', 'rcp60');
var rcp85 = january.filterMetadata('scenario', 'equals', 'rcp85');
//设置矢量边界
var forest = ee.Feature(
    ee.Geometry.Rectangle(-121, 39.4, -120.8, 39.8),
    {label: 'Tahoe National Forest'});
var roi = ee.Feature(
    ee.FeatureCollection('USGS/WBD/2017/HUC06')
        .filterMetadata('huc6', 'equals', '180400')  // San Joaquin watershed
        .first());
//这里是曲线图的设置,主要是标题包括线宽和字体大小
var options = {
  title: 'Daily Maximum Near-Surface Air Temperature',
  vAxis: {
    title: 'Daily Maximum Near-Surface Air Temperature [Celsius]'
  },
  lineWidth: 1,
  pointSize: 4
};
//曲线图的标签设置
var labelBands = function(collection, scenario) {
  return collection.select(
    ['tasmax_median', 'tasmax_quartile25', 'tasmax_quartile75'],
    ['rcp' + scenario + '_tasmax_median',
     'rcp' + scenario + '_tasmax_quartile25',
     'rcp' + scenario + '_tasmax_quartile75']);
};
//一个波段和另一个波段的掩膜
var combined = labelBands(rcp26, '26').merge(labelBands(rcp85, '85'));
//图形的设置
var chart = ui.Chart.image.series({
  imageCollection: combined,
  region: roi,
  reducer: ee.Reducer.mean(),
  scale: 200,
  xProperty: 'system:time_start'
}).setChartType('LineChart')
  .setOptions({
  title: 'Predicted January Temperature - San Joaquin Watershed',
  vAxis: {
    title: 'Daily Maximum Near-Surface Air Temperature [Celsius]'
  },
  interval: {
    rcp26_tasmax_quartile: {'style':'area'},
    rcp85_tasmax_quartile: {'style':'area'},
  },
  lineWidth: 1,
  curveType:'function',
  interpolateNulls: true
});
chart = chart.setSeriesNames('RPC2.6', 0);
chart = chart.setSeriesNames('RPC8.5', 3);
print(chart);
//主要是设置不同曲线的颜色和对应标签属性
var sld =
'<RasterSymbolizer>' +
  '<ColorMap>' +
    '<ColorMapEntry color="#110092" quantity="17.5" label="17.5"/>' +
    '<ColorMapEntry color="#0C00FF" quantity="20.0" label="20.0" />' +
    '<ColorMapEntry color="#0E66FF" quantity="22.5" label="22.5" />' +
    '<ColorMapEntry color="#0DDFFB" quantity="25.0" label="25.0" />' +
    '<ColorMapEntry color="#52AA92" quantity="27.5" label="27.5" />' +
    '<ColorMapEntry color="#A9EE35" quantity="30.0" label="30.0" />' +
    '<ColorMapEntry color="#FFDE00" quantity="32.5" label="32.5" />' +
    '<ColorMapEntry color="#FF6E00" quantity="35.0" label="35.0" />' +
    '<ColorMapEntry color="#F90000" quantity="37.5" label="37.5" />' +
    '<ColorMapEntry color="#770B11" quantity="40.0" label="40.0" />' +
  '</ColorMap>' +
'</RasterSymbolizer>';
//这个主要是地图上的显示
var image2 = ee.Image(rcp26.filterDate('2050-01-01', '2051-01-01').first())
    .select('tasmax_median');
Map.centerObject(roi);
Map.addLayer(image2,
             {bands:'tasmax_median', min:-2, max:8},
             'historical_195001 tasmax_median', false);
Map.addLayer(image2.sldStyle(sld), {}, "tasmax_median (styled)", true);
Map.addLayer(roi, {}, 'Region of Interest');


相关文章
|
3月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
644 0
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
3月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
110 0
|
2月前
|
存储 编解码 数据可视化
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
【2月更文挑战第14天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,按照给定的地表分类数据,对每一种不同的地物类型,分别加以全球范围内随机抽样点自动批量选取的方法~
273 0
Google Earth Engine获取随机抽样点并均匀分布在栅格的不同数值区中
|
3月前
|
数据处理
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
32 0
|
3月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
31 0
|
3月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
48 0
|
3月前
|
编解码
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
Open Google Earth Engine(OEEL)——matrixUnit(...)中产生常量影像
23 0
|
3月前
Google Earth Engine(GEE)——导出指定区域的河流和流域范围
Google Earth Engine(GEE)——导出指定区域的河流和流域范围
51 0
|
3月前
|
传感器 编解码 数据处理
Open Google Earth Engine(OEEL)——哨兵1号数据的黑边去除功能附链接和代码
Open Google Earth Engine(OEEL)——哨兵1号数据的黑边去除功能附链接和代码
25 0
|
3月前
Google Earth Engine(GEE)——当加载图表的时候出现错误No features contain non-null values of “system:time_start“.
Google Earth Engine(GEE)——当加载图表的时候出现错误No features contain non-null values of “system:time_start“.
45 0