1

我是地理空间分析和谷歌地球引擎的初学者。我试图只对一类 Landsat 5 图像(游泳池)进行分类。我有几个培训站点并应用了分类器。结果,我的分类图像看起来完全是红色的(所以分类没有给我预期的结果)。那是因为我应该分类几个类而不是一个类吗?以及如何要求通过我的训练站点对我定义的类进行分类并创建另一个类来收集不属于先前定义的类的所有像素?在我使用的代码下方:

var bands = ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7']

var image= ee.Image('LANDSAT/LT05/C01/T1_TOA/LT05_015036_20111025')
      .select(bands)

// Train is the feature collection containing my training sites (points)
var training = image.sampleRegions({
               collection: train,
               properties: ['class'],
               scale: 30
               });

var trained = ee.Classifier.cart().train(training, 'class', bands);

// Classify the image with the same bands used for training.
var classified = image.select(bands).classify(trained);
4

2 回答 2

1

正如@Val 所说,您将需要至少有两个课程。这意味着您要么必须携带一个属于“其他所有”类的数据集,要么可以在 Earth Engine 中创建一个伪非出现数据集。伪不出现抽样假设您有一个完美的第一类出现样本,因为它将选择不靠近第一个样本的区域来创建另一个样本(如果这有任何意义的话......)。它在代码中可能看起来像这样:

var bands = ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7']

var image= ee.Image('LANDSAT/LT05/C01/T1_TOA/LT05_015036_20111025')
  .select(bands)

// Train is the feature collection containing my training sites (points)
var occurrence = image.sampleRegions({
           collection: train,
           properties: ['class'],
           scale: 30
           }).map(function(feature){
               return feature.set('class',ee.Number(1))
           });

// Create geometry where there is no occurrence data
var nonarea = image.geometry().difference(train.buffer(100))

// Sample from region where there is no occurrence data
var nonoccurrence = image.sample({
           region: nonarea,
           scale: 30
           }).map(function(feature){
               return feature.set('class',ee.Number(0))
           });

// Merge the occurrence and non-occurrence feature collections
var training = ee.FeatureCollection(occurrence.merge(nonoccurrence))

var trained = ee.Classifier.cart().train(training, 'class', bands);

// Classify the image with the same bands used for training.
var classified = image.select(bands).classify(trained);

(您可能需要修复上面代码中的一些数据类型,如果没有样本数据很难测试......)。这是物种分布和灾害风险建模中常用的方法,希望对您的用例有所帮助!

于 2018-12-05T03:41:49.610 回答
0

我可能遇到过类似的问题,分类图像只显示一个类别。就我而言,这不是分类或算法的问题,而只是输出视图的设置。

这就像:

Map.addLayer(classified, {},'classified',true);

返回一个只有一种颜色(类)的地图,但是

Map.addLayer(classified, {palette: igbpPalette, min: 0, max: 17},'classified',true);

返回具有所需颜色(类)的地图。“Classified”是输出的分类图像,“ihbpPalette”是包含颜色信息的列表。

我希望这会给你一个新的调试方向。

于 2019-11-05T08:25:08.217 回答