0

我正在尝试在地球引擎代码上实现算法来预测耕地面积。这是我的代码:

var landsatCollection = ee.ImageCollection('LANDSAT/LC08/C01/T1')
    .filterDate('2017-01-01', '2017-12-31');

// Make a cloud-free composite.
var composite = ee.Algorithms.Landsat.simpleComposite({
  collection: landsatCollection,
  asFloat: true
});

// Merge the three geometry layers into a single FeatureCollection.
var newfc = urban.merge(vegetation).merge(water).merge(urban).merge(fields);

// Use these bands for classification.
var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7'];
// The name of the property on the points storing the class label.
var classProperty = 'landcover';

// Sample the composite to generate training data.  Note that the
// class label is stored in the 'landcover' property.
var training = composite.select(bands).sampleRegions({
  collection: newfc,
  properties: [classProperty],
  scale: 30
});

// Train a CART classifier.
var classifier = ee.Classifier.smileCart().train({
  features: training,
  classProperty: [classProperty],
});
// Print some info about the classifier (specific to CART).
print('CART, explained', classifier.explain());

// Classify the composite.
var classified = composite.classify(classifier);
Map.centerObject(newfc);
Map.addLayer(classified, {min: 0, max: 3, palette: ['red', 'blue', 'green','yellow']});

// Optionally, do some accuracy assessment.  Fist, add a column of
// random uniforms to the training dataset.
var withRandom = training.randomColumn('random');

// We want to reserve some of the data for testing, to avoid overfitting the model.
var split = 0.7;  // Roughly 70% training, 30% testing.
var trainingPartition = withRandom.filter(ee.Filter.lt('random', split));
var testingPartition = withRandom.filter(ee.Filter.gte('random', split));

// Trained with 70% of our data.
var trainedClassifier = ee.Classifier.smileCart().train({
  features: trainingPartition,
  classProperty: classProperty,
  inputProperties: bands
});

// Classify the test FeatureCollection.
var test = testingPartition.classify(trainedClassifier);

// Print the confusion matrix.
var confusionMatrix = test.errorMatrix(classProperty, 'classification');
print('Confusion Matrix', confusionMatrix);

我收到这些错误:

  • 购物车,解释字典(错误)功能“1_1_1_1_0_0”的属性“地被”丢失。
  • 混淆矩阵 ConfusionMatrix(错误)特征“1_1_1_1_1_0”的属性“地覆”缺失。
  • 第 1 层:图层错误:特征 '1_1_1_1_0_0' 的属性 'landcover' 缺失。

给我一些建议来解决这些错误。

4

1 回答 1

0

错误似乎在第 11 行, var newfc = urban.merge(vegetation).merge(water).merge(urban).merge(fields);

  1. 确保urban and othersFeatureCollection来自Configure geometry import tool.
  2. 添加属性 'landcover',城市值为 1,水值为 2,依此类推。

您可以检查 print(newfc) 并查看属性并检查功能“1_1_1_1_0_0”

我附上了图片。配置几何点

于 2022-01-08T09:35:29.210 回答