01 说明
源码链接:https://code.earthengine.google.com/4f02959684e1ad8bd70df97175540b89
这里仅说明如何查找GAUL数据集的各个行政区划的属性信息,特别是行政区划的名称.
var fvLayer = ui.Map.FeatureViewLayer('FAO/GAUL/2015/level1_FeatureView'); var visParams = { color: '00909F', fillColor: 'b5ffb4', opacity: 1, width: 1, pointSize: 1 }; fvLayer.setVisParams(visParams); fvLayer.setName('First Level Administrative Units'); Map.setCenter(7.82, 49.1, 4); Map.add(fvLayer);
运行上述代码,通过显示在图层上的各个行政区划,将鼠标状态切换到Inspector,点击指定区域获取该位置的行政区划要素的属性信息。操作如下:
02 完整代码
/* 该程序用于获取指定时间范围的MOD09GA数据集的月尺度NDVI产品 */ // 定义日期范围 var start_date = '2000-02-01'; // 必须以一号结尾 var end_date = '2020-12-31'; var roi_name = 'Sichuan Sheng'; // 定义云和水体掩膜函数 function maskCloudAndWater(image) { var QA = image.select('QC_500m'); // 创建一个空的mask,初始值为1(即所有像素都不被掩膜覆盖) var mask = ee.Image.constant(1); // 遍历每个波段的数据质量标识 for (var i = 0; i < 2; i++) { // 因为我选取了两个波段进行ndvi的计算 // 计算当前波段的数据质量标识的起始位(是从2开始) var startBit = 2 + i * 4; // 提取当前波段的数据质量标识 var bandQuality = QA.rightShift(startBit).bitwiseAnd(15); // 如果数据质量标识为15,说明该像素可能被云或深海覆盖,需要被掩膜覆盖 mask = mask.min(bandQuality.neq(15)); // min取两者间小的那个值,逐像元 } // 应用掩膜 return image.updateMask(mask); } // 定义获取日期列表的函数 function month_list(start_date, end_date) { // 将字符串转换为ee.Date对象 var startDate = ee.Date(start_date); var endDate = ee.Date(end_date); // 计算总共有多少个月 var diff = endDate.difference(startDate, 'month').round(); // 创建每个月的开始和结束日期的列表 var dates = ee.List.sequence(0, diff.subtract(1)).map(function (n) { var start = startDate.advance(n, 'month'); var end = start.advance(1, 'month').advance(-1, 'day'); return [start.format('YYYY-MM-dd'), end.format('YYYY-MM-dd')]; }); return dates } // 定义地理空间范围(四川省) // var roi = ee.FeatureCollection('projects/ee-chaoqiezione/assets/china_admin_province') // roi = roi.filter(ee.Filter.eq('省', roi_name)); var roi = ee.FeatureCollection("FAO/GAUL/2015/level1") .filter(ee.Filter.eq('ADM1_NAME', roi_name)); Map.addLayer(roi.style({fillColor: "00000000"}), {width: 2}, roi_name) Map.centerObject(roi, 6) // 生成日期列表 var dates = month_list(start_date, end_date); dates.evaluate(function(dates) { dates.map(function(date){ var start = ee.Date(date[0]); var stop = ee.Date(date[1]); // 加载MODIS数据根据日期和地理范围进行筛选 var modis_ndvi = ee.ImageCollection("MODIS/061/MOD09GA") .filterDate(start, stop) .filterBounds(roi) .select(['sur_refl_b02', 'sur_refl_b01', 'QC_500m']) .map(function (img) { img = maskCloudAndWater(img); // 水体和云掩膜 // img = img.add(0.0001) 本应进行单位换算, 但是仅仅计算ndvi时会约掉,为了减小计算量这里不进行 return img.normalizedDifference(['sur_refl_b02', 'sur_refl_b01']).rename('ndvi') // 计算ndvi }) .mean().clip(roi).unmask(-9999) modis_ndvi = modis_ndvi.set({name: ee.String(start.format('YYYY-MM-dd'))}); Export.image.toDrive({ image: modis_ndvi.select("ndvi"), region: roi.geometry(), scale:500, description: "ndvi_" + date[0] + '_' + date[1], folder: 'MOD09GA_NDVI', }); }) }) // 仅用于查看GAUL行政区划的属性信息 // var fvLayer = ui.Map.FeatureViewLayer('FAO/GAUL/2015/level1_FeatureView'); // var visParams = { // color: '00909F', // fillColor: 'b5ffb4', // opacity: 1, // width: 1, // pointSize: 1 // }; // fvLayer.setVisParams(visParams); // fvLayer.setName('First Level Administrative Units'); // Map.setCenter(7.82, 49.1, 4); // Map.add(fvLayer);
时间有限,很多代码的相关讨论并没有进行。如有问题,私聊或者评论.