Map.addLayer()函数可以直接加载在地图中展示,但是对于显示边界则需要自己构造一个空的Image,然后通过相关绘制显示。裁剪的话就比较简单直接通过clip()函数就可以实现对图像的裁剪,这里面还涉及到通过filter()筛选矢量边界相关数据。
// 展示如何通过上传的矢量边界裁剪显示NDVI同时绘制出矢量边界
// 这里是哨兵2相关波段数据
// S2 Band Use Wavelength Resolution
// B1 Aerosols 443nm 60m
// B2 Blue 490nm 10m
// B3 Green 560nm 10m
// B4 Red 665nm 10m
// B5 Red Edge 1 705nm 20m
// B6 Red Edge 2 740nm 20m
// B7 Red Edge 3 783nm 20m
// B8 NIR 842nm 10m
// B8a Red Edge 4 865nm 20m
// B9 Water vapor 940nm 60m
// B10 Cirrus 1375nm 60m
// B11 SWIR 1 1610nm 20m
// B12 SWIR 2 2190nm 20m
// 上传的矢量边界文件
var city = ee.FeatureCollection("users/wangweihappy0/shape/china_albers_city");
// 筛选时间
var start_date = ee.Date.fromYMD(2016, 1, 1);
var end_date = ee.Date.fromYMD(2016, 12, 31);
// 由于上传的数据是全国的数据,这里通过Filter过滤出邯郸数据
var handan = city.filter(ee.Filter.eq("ad2004", 130400));
// 哨兵2的数据
var s2 = ee.ImageCollection("COPERNICUS/S2");
// 哨兵2去云
var s2_rmcloud = function(image) {
var quality = image.select("QA60").unmask();
return image.updateMask(quality.eq(0));
};
// 哨兵2计算ndvi
var s2_ndvi = function(image) {
return image.addBands(image.normalizedDifference(["B8", "B4"]).rename("NDVI"));
};
//获取感兴趣区域
var study_s2 = s2.filterDate(start_date, end_date)
.filterBounds(handan);
var study_s2_nocloud = study_s2.map(s2_rmcloud);
var ndvi = s2_ndvi(study_s2_nocloud.median()).select("NDVI").clip(handan);
var visParam = {
min: -0.2,
max: 0.8,
palette: 'FFFFFF, CE7E45, DF923D, F1B555, FCD163, 99B718, 74A901, 66A000, 529400,' +
'3E8601, 207401, 056201, 004C00, 023B01, 012E01, 011D01, 011301'
};
// 绘制NDVI
Map.addLayer(ndvi, visParam, 'Vegetation');
Map.centerObject(handan, 8);
// 这里构建空的Image,然后通过palette设置边界颜色
var empty = ee.Image().toByte();
var outline = empty.paint({
featureCollection:handan, // 筛选的colletion
color:0, //颜色透明
width:3 //边界宽度
});
//绘制红色边界
Map.addLayer(outline, {palette: "ff0000"}, "outline");
// 绘制默认的行政区划,颜色设置为蓝色,默认图层不显示
Map.addLayer(handan, {color:"0000ff"}, "handan", false);