计算谷歌地球引擎中分类像素的面积

时间:2018-05-14 09:58:30

标签: google-earth-engine

我的问题代码如下:

var image = ee.Image(sent2
 .filterBounds(geometry2)
 .filterDate('2016-01-01', '2016-03-31')
 .sort("CLOUD_COVERAGE_ASSESSMENT")
 .first());

// print the image to the console.

    print("A Sentinel-2 scene:", image);

剪辑研究区域的几何

var image1=image.clip(geometry2)

//merging the feature collection collected 

var newfc = forest.merge(gram2).merge(baresoil).merge(wheat2).merge(mustard2);

var bands = [ 'B8', 'B4', 'B3'];

var training = image1.select(bands).sampleRegions({collection: newfc, properties: ['landcover'], scale: 10});

使用CART训练分类器

var classifier = ee.Classifier.cart().train({features: training, classProperty: 'landcover', inputProperties: bands});

运行分类

var classified = image1.select(bands).classify(classifier);

Map.addLayer(classified, {min: 0, max: 4, palette: '0D5D07','B47610','F7C537','7CE72E','EFF60E']},'classification');

// 0森林1裸土2克3小麦4芥末

var PIXEL_SCALE = 10; // Meters. Resolution of most sentinel bands

var PIXEL_AREA = PIXEL_SCALE * PIXEL_SCALE; // Square meters.

计算多边形中每个分类的像素数

var regionCoverHistogram = image1.select('classifier') .reduceRegion(ee.Reducer.frequencyHistogram(), geometry2, PIXEL_SCALE);

print('classified class pixel count within region', regionCoverHistogram);

var wheatPixelCount =ee.Dictionary(regionCoverHistogram.get('wheat2')).get(wheat2.toString());

var wheatArea = ee.Number(wheatPixelCount).multiply(PIXEL_AREA);

print('Wheat Area (sq meters) in region', wheatArea);

显示错误如下:

  

区域内的类别像素数   字典(错误)   Image.select:模式'分类器'与任何波段都不匹配。   小麦面积(平方米)的地区   数字(错误)   Image.select:模式'分类器'与任何波段都不匹配。

1 个答案:

答案 0 :(得分:0)

如果没有脚本,将很难分辨出来,但我的猜测是,您要为直方图选择的band('classifier)不在image1内,而在结果图像内:'classified'。

将image1更改为分类将是第一个建议。