GEE学习笔记 二十三:使用矢量资源

日期:

今天主要看一个问题,对于我们上传的GEE的矢量资源我们如何使用,这里以显示行政区划边界和通过行政区划裁剪显示NDVI。

首先资源的显示比较简单直接通过 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);

 

展示结果,裁剪的NDVI涂层以及行政区划的红色边界

 

蓝色的原始行政区划