我正在尝试使用Google Earth Engine建立时间序列。但是,我得到了错误:
错误生成图表:没有要素包含非空值 “ system:time_start”
据我所知,发生这种情况是因为在使用遮罩时丢失了“ time_start”变量。我试图根据站点上的先前答案来解决它,但是我没有设法做到这一点。有什么帮助吗?
var geometry4 = ee.Geometry.Polygon
( [[[75.01429435979423, 36.0604124248592], [76.48646232854423, 35.1583046515728], [76.55238029729423, 36.19351928026619], [75.04725334416923, 36.43254217380418]]])
Map.addLayer (geometry4);
var createTimeBand = function(image) { return image.addBands(image.metadata('system:time_start').divide(1000 * 60 * 60 * 24 * 365)); };
var dataset = ee.ImageCollection("MODIS/006/MOD10A1") .filterBounds(geometry4)
.map(function(image){return image.clip(geometry4)}) .filter(ee.Filter.date('2005-01-01', '2017-12-28')) .filter(ee.Filter.calendarRange(7, 7,'month')) .map(createTimeBand);
var snowAlbedo= dataset.select('Snow_Albedo_Daily_Tile');
var linearFit= dataset.select(['system:time_start', 'Snow_Albedo_Daily_Tile'])
.reduce(ee.Reducer.linearFit())
.set('system:time_start', dataset.get('system:time_start'));
Map.addLayer(linearFit, {min: 0, max: [-0.9, 8e-5, 1], bands: ['scale', 'offset', 'scale']}, 'fit');
//mask
var snowAlbedo= dataset.select('Snow_Albedo_Daily_Tile');
var mean_albedo= snowAlbedo.reduce(ee.Reducer.mean());
var mask= mean_albedo.gt(40);
Map.addLayer(mask, "", 'mask');
//linear fit2 updated by mask
var linearFit2= linearFit.updateMask(mask) .set('system:time_start', dataset.get('system:time_start'));
print (linearFit2); Map.addLayer(linearFit2, {min: 0, max: [-0.9, 8e-5, 1], bands: ['scale', 'offset', 'scale',]}, 'fit2');
//timeseries
var tempTimeSeries= ui.Chart.image.seriesByRegion( linearFit2, geometry4, ee.Reducer.mean(), "", 250) .setChartType('ScatterChart')
.setOptions({
title: 'Albedo-MODIS',
vAxis: {title: 'Albedo'},
lineWidth:1,
pointSize:4,
series:{ 0: {color: 'FF0000'}, }});
print (tempTimeSeries);