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');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

此星光明

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

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

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

打赏作者

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

抵扣说明:

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

余额充值