代码:
var geometry = /* color: #d63000 */ /* shown: false */ /* displayProperties: [ { "type": "rectangle" } ] */ ee.Geometry.Polygon( [[[116.3170431824926, 39.951392210363046], [116.3170431824926, 39.86079576415406], [116.4708517762426, 39.86079576415406], [116.4708517762426, 39.951392210363046]]], null, false); // 矢量 var aoi = geometry print(aoi); Map.addLayer(aoi); var centroid = aoi.centroid(1) print(centroid); var coors = centroid.coordinates().getInfo() var x = coors[0] var y = coors[1]; Map.setCenter(x, y, 10); // 详述日期 // Getting Temperatures for Every Month var period = ['-01-01', '-12-01']; var years = [['1999', '2000'], ['2000', '2001'], ['2001', '2002'], ['2002', '2003'], ['2003', '2004'], ['2004', '2005'], ['2005', '2006'], ['2006', '2007'], ['2007', '2008'], ['2008', '2009'], ['2009', '2010'], ['2010', '2011'], ['2011', '2012'], ['2012', '2013'], ['2013', '2014'], ]; var add_period = function(year){ var start_date = period[0]; var end_date = period[1]; return [year[0] + start_date, year[1] + end_date]; }; var concatenate_year_with_periods = function(years, period){ return years.map(add_period); }; var Dates = concatenate_year_with_periods(years, period); /********************************************************************** Landsat 7 ***********************************************************************/ var visualization = { bands: ['B4', 'B3', 'B2'], min: 0.0, max: 0.3, }; var visualization_ = { bands: ['B4_median', 'B3_median', 'B2_median'], min: 0.0, max: 0.3, gamma: [0.95, 1.1, 1] }; // 去云 var cloudMaskL7 = function(image) { var qa = image.select('BQA'); var cloud = qa.bitwiseAnd(1 << 4) .and(qa.bitwiseAnd(1 << 6)) .or(qa.bitwiseAnd(1 << 8)); var mask2 = image.mask().reduce(ee.Reducer.min()); return image //.select(['B3', 'B4'], ['Red', 'NIR']) .updateMask(cloud.not()).updateMask(mask2) .set('system:time_start', image.get('system:time_start')); }; var dataset = ee.ImageCollection('LANDSAT/LE07/C01/T1_TOA') .filterDate('1999-01-01', '2020-12-31') .filterBounds(aoi) //.map(applyScaleFactors) .map(cloudMaskL7) .map(function(image){return image.clip(aoi)}); // 使用中位像素值创建合成物 var median_yearly_landsat_7 = function(start, end){ var dataset_ = dataset.filter(ee.Filter.date(start, end)); var median_yearly = dataset_.reduce(ee.Reducer.median()); return median_yearly; }; var composite_name_list_l7 = ee.List([]); var apply_monthly_composite = function(date_list){ var start = date_list[0]; var end = date_list[1]; var output_name = start + "TO" + end + "_LANSAT_7"; var composite = median_yearly_landsat_7(start, end); composite_name_list_l7 = composite_name_list_l7.add([composite, output_name]); Map.addLayer(composite, visualization_, output_name, false); Export.image.toDrive({ image: composite, description: output_name, fileFormat: 'GeoTIFF', crs : 'EPSG:4326', folder : 'LANDSAT_LST_LAS_LOMAS', region: aoi }); return 0; }; Dates.map(apply_monthly_composite); /****************************************************************** // Animation gif // 创建RGB可视化图像,作为动画框架使用。 /******************************************************************/ var text = require('users/gena/packages:text'); var annotated_collection_list = ee.List([]) var annotations = [//大比例尺,因为图像是整个世界的。使用较小的比例,否则超限 {position: 'left', offset: '0.25%', margin: '0.25%', property: 'label', scale: 1.5} ]; var create_annotated_collection = function(image_and_id) { var img = image_and_id[0]; var image_id = image_and_id[1]; console.log(img); console.log(image_id); var img_out = img.visualize(visualization_) .clip(aoi)//.paint(municipalities, 'FF0000', 2) .set({'label': image_id}); Map.addLayer(img_out); var annotated = text.annotateImage(img_out, {}, Bayern, annotations); annotated_collection.add(annotated); return 0; }; var municipalities_geom = geometry; var n = composite_name_list_l7.size().getInfo(); print(n); for (var i = 0; i < n; i++) { var img_info = ee.List(composite_name_list_l7.get(i)); print(img_info); var img = ee.Image(img_info.get(0)); var img_id = ee.String(img_info.get(1)); var year = ee.String(ee.List(img_id.split("-").get(0))); var month = ee.String(ee.List(img_id.split("-").get(1))); var img_id_ = year.getInfo() + "_" + month.getInfo(); var img_out = img.visualize(visualization_) .set({'label': img_id_}); var annotated = text.annotateImage(img_out, {}, municipalities_geom, annotations); Map.addLayer(annotated); var annotated_collection_list = annotated_collection_list.add(annotated) } var annotated_col = ee.ImageCollection(annotated_collection_list) // 定义GIF的可视化参数。 var gifParams = { 'region': geometry, 'dimensions': 254, 'crs': 'EPSG:32632', 'framesPerSecond': 1 }; // 打印GIF的URL到控制台。 print(annotated_col.getVideoThumbURL(gifParams)); // 在控制台中渲染GIF动画。 print(ui.Thumbnail(annotated_col, gifParams));
这里每一次最终的影像结果:
本文所需用到的函数:
getVideoThumbURL(params, callback)
为这个ImageCollection获取一个动画缩略图的URL。
返回一个缩略图的URL,如果指定了回调,则未定义。
参数。
this:imagecollection(ImageCollection)。
ImageCollection实例。
params (对象):
与ee.data.getMapId相同的参数,另外,可以选择。
dimensions (a number or pair of numbers in format WIDTHxHEIGHT) 要渲染的缩略图的最大尺寸,单位是像素。如果只传递了一个数字,它将被用作最大尺寸,而另一个尺寸则通过比例缩放来计算。
region(E,S,W,N或GeoJSON)要渲染的图像的地理空间区域。默认情况下是整个图像。
format(字符串) 编码格式。只接受 "gif"。
framesPerSecond(数字) 动画速度。
callback(函数,可选)。
一个可选的回调,处理产生的URL字符串。如果不提供,将同步进行调用。
返回。对象|字符串
这里我们看到动态图没有动画,一片黑色,这里是否能有一个有效的结果呢?
大家可以参考:
(193条消息) Google Earth Engine ——快速实现MODIS影像NDVI动画的在线加载并导出_此星光明的博客-CSDN博客
(194条消息) Google Earth Engine(GEE)——利用Landsat 5 每一期影像制作动画时序并附带时间属性_此星光明的博客-CSDN博客_landsat5