Javascript 将光栅转换为多边形在Google Eart引擎上重新分类NDVI光栅

Javascript 将光栅转换为多边形在Google Eart引擎上重新分类NDVI光栅,javascript,google-earth-engine,Javascript,Google Earth Engine,这就是我用来估算NDVI的全部代码 初始值 var roi =/* color: #98ff00 *//* displayProperties: [{"type": "rectangle"}] */ ee.Geometry.Polygon( [[[-72.3734130976651, -13.430548306629259], [-72.3734130976651, -14.326448420293916], [-70.725463

这就是我用来估算NDVI的全部代码

初始值

var roi =/* color: #98ff00 *//* displayProperties: [{"type": "rectangle"}] */
    ee.Geometry.Polygon(
        [[[-72.3734130976651, -13.430548306629259],
          [-72.3734130976651, -14.326448420293916],
          [-70.7254638789151, -14.326448420293916],
          [-70.7254638789151, -13.430548306629259]]], null, false);
var startDate = ee.Date('2018-08-23');
var endDate = ee.Date('2018-12-21');
var cloud = 20
选择Satilite 0:2015年6月23日-2019年7月17日哨兵2级1C

var selector = 0;
var Sentinel = "";
NDVI

选择卫星

switch(selector){ case 0: Sentinel =  'COPERNICUS/S2'}
收藏

var collection = ee.ImageCollection(Sentinel) 
  .filter(ee.Filter.lt("CLOUDY_PIXEL_PERCENTAGE", cloud))
  .filterDate(startDate, endDate)
  .filterBounds(roi);
print(collection) 
计算NDVI

var ndviFiltered = collection.map(getNDVI).qualityMosaic('B8').clip(roi);
重分类光栅

var DTstring = ['1) root 9999 9999 9999',
'2) B8<=0.2 9999 9999 1 *',
'3) B8>0.2 9999 9999 9999',
'6) B8<=0.4 9999 9999 2 *',
'7) B8>0.4 9999 9999 9999',
'14) B8<=0.6 9999 9999 3 *',
'15) B8>0.6 9999 9999 9999',
'30) B8<=0.8 9999 9999 4 *',
'31) B8>0.8 9999 9999 5 *'].join("\n");

var classifier = ee.Classifier.decisionTree(DTstring);
var reclass = ndviFiltered.select('B8').classify(classifier);
print(reclass)

Map.addLayer(reclass,{min:1,max:5}, 'Reclass');
这里我得到了这个错误FeatureCollection错误 Image.reduceToVectors:图像的第一个频带“B8”必须是整数
B8波段已经是一个完整的

我面临着一个类似的问题。 NDVI值为连续值,无法将其转换为这种格式的矢量。 您必须定义离散区域并用空图像遮罩它。 看这个

var DTstring = ['1) root 9999 9999 9999',
'2) B8<=0.2 9999 9999 1 *',
'3) B8>0.2 9999 9999 9999',
'6) B8<=0.4 9999 9999 2 *',
'7) B8>0.4 9999 9999 9999',
'14) B8<=0.6 9999 9999 3 *',
'15) B8>0.6 9999 9999 9999',
'30) B8<=0.8 9999 9999 4 *',
'31) B8>0.8 9999 9999 5 *'].join("\n");

var classifier = ee.Classifier.decisionTree(DTstring);
var reclass = ndviFiltered.select('B8').classify(classifier);
print(reclass)

Map.addLayer(reclass,{min:1,max:5}, 'Reclass');
var vectors = ndviFiltered.reduceToVectors({
  geometry: roi,
  scale: 1000,
  geometryType: 'polygon',
  reducer: ee.Reducer.countEvery()
});
print(vectors)