function maskS2clouds(image) {
var qa = image.select('QA60')
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(
qa.bitwiseAnd(cirrusBitMask).eq(0))
return image.updateMask(mask).divide(10000)
.select("B.*")
.copyProperties(image, ["system:time_start"])
}
Map.centerObject(roi)
Map.addLayer(roi)
//春
var startDate_c = ee.Date('2021-02-03');
var endDate_c = ee.Date('2021-05-04');
//夏
var startDate_x = ee.Date('2021-05-05');
var endDate_x = ee.Date('2021-08-06');
//秋
var startDate_q = ee.Date('2021-08-07');
var endDate_q = ee.Date('2021-11-06');
//冬
var startDate_d = ee.Date('2021-11-07');
var endDate_d = ee.Date('2022-02-03');
var collection = s2.filterBounds(roi)//位置过滤
var image_c=collection.filterDate(startDate_c, endDate_c)
.filter(ee.Filter.lt('CLOUD_COVERAGE_ASSESSMENT',10))
.map(maskS2clouds)
.mosaic().clip(roi);
var image_x=collection.filterDate(startDate_x, endDate_x)
.filter(ee.Filter.lt('CLOUD_COVERAGE_ASSESSMENT',10))
.map(maskS2clouds)
.mosaic().clip(roi);
var image_q=collection.filterDate(startDate_q, endDate_q)
.filter(ee.Filter.lt('CLOUD_COVERAGE_ASSESSMENT',10))
.map(maskS2clouds)
.mosaic().clip(roi);
var image_d=collection.filterDate(startDate_d, endDate_d)
.filter(ee.Filter.lt('CLOUD_COVERAGE_ASSESSMENT',10))
.map(maskS2clouds)
.mosaic().clip(roi);
var image1 = collection.filterDate('2021-01-01','2021-12-31')
.filter(ee.Filter.lt('CLOUD_COVERAGE_ASSESSMENT',10))
.map(maskS2clouds);
var image2 = image1;
var image3 = image1;
var image4 = image1;
var image5 = image1;
var image6 = image1;
var image7 = image1;
var image8 = image1;
//NDWI
var addNDWI_c = function(image) {
var ndwi_c = image_c.normalizedDifference(['B3', 'B8']).rename('NDWI_c');
return image.addBands(ndwi_c);
};
var addNDWI_x = function(image) {
var ndwi_x = image_x.normalizedDifference(['B3', 'B8']).rename('NDWI_x');
return image.addBands(ndwi_x);
};
var addNDWI_q = function(image) {
var ndwi_q = image_q.normalizedDifference(['B3', 'B8']).rename('NDWI_q');
return image.addBands(ndwi_q);
};
var addNDWI_d = function(image) {
var ndwi_d = image_d.normalizedDifference(['B3', 'B8']).rename('NDWI_d');
return image.addBands(ndwi_d);
};
//NDVI
var addNDVI_c = function(image) {
var ndvi_c = image_c.normalizedDifference(['B8', 'B4']).rename('NDVI_c');
return image.addBands(ndvi_c);
};
var addNDVI_x = function(image) {
var ndvi_x = image_x.normalizedDifference(['B8', 'B4']).rename('NDVI_x');
return image.addBands(ndvi_x);
};
var addNDVI_q = function(image) {
var ndvi_q = image_q.normalizedDifference(['B8', 'B4']).rename('NDVI_q');
return image.addBands(ndvi_q);
};
var addNDVI_d = function(image) {
var ndvi_d = image_d.normalizedDifference(['B8', 'B4']).rename('NDVI_d');
return image.addBands(ndvi_d);
};
//NDWI
image1 = image1.map(addNDWI_c).qualityMosaic('NDWI_c')
image2 = image2.map(addNDWI_x).qualityMosaic('NDWI_x')
image3 = image3.map(addNDWI_q).qualityMosaic('NDWI_q')
image4 = image4.map(addNDWI_d).qualityMosaic('NDWI_d')
//NDVI
image5 = image5.map(addNDVI_c).qualityMosaic('NDVI_c')
image6 = image6.map(addNDVI_x).qualityMosaic('NDVI_x')
image7 = image7.map(addNDVI_q).qualityMosaic('NDVI_q')
image8 = image8.map(addNDVI_d).qualityMosaic('NDVI_d')
var ndwi_c = image1.select('NDWI_c')
var ndwi_x = image2.select('NDWI_x')
var ndwi_q = image3.select('NDWI_q')
var ndwi_d = image4.select('NDWI_d')
var ndvi_c = image5.select('NDVI_c')
var ndvi_x = image6.select('NDVI_x')
var ndvi_q = image7.select('NDVI_q')
var ndvi_d = image8.select('NDVI_d')
var image = collection.filterDate('2021-01-01','2021-12-31')
.filter(ee.Filter.lt('CLOUD_COVERAGE_ASSESSMENT',10))
.map(maskS2clouds)
.mosaic().clip(roi);
var ndbi = image.normalizedDifference(['B12', 'B8']).rename('NDBI');
var image = image
.addBands(ndvi_c)
.addBands(ndvi_x)
.addBands(ndvi_q)
.addBands(ndvi_d)//
.addBands(ndwi_c)
.addBands(ndwi_x)
.addBands(ndwi_q)
.addBands(ndwi_d)//
.addBands(ndbi)
Map.addLayer(image, {bands: ['B4', 'B3', 'B2'],min:0.0, max: 0.3}, 'true');
var classNames = city.merge(water).merge(soil).merge(crop);
var bands = [ 'B2', 'B3', 'B4', 'B8', 'B12',
'NDWI_c', 'NDWI_x', 'NDWI_q', 'NDWI_d',
'NDVI_c', 'NDVI_x', 'NDVI_q', 'NDVI_d'];
var training = image.select(bands).sampleRegions({
collection: classNames,
properties: ['landcover'],
scale: 10
});
var withRandom = training.randomColumn('random');//样本点随机的排列
var split = 0.7;
var trainingPartition = withRandom.filter(ee.Filter.lt('random', split));//筛选70%的样本作为训练样本
var testingPartition = withRandom.filter(ee.Filter.gte('random', split));//筛选30%的样本作为测试样本
var classProperty = 'landcover';
var classifier = ee.Classifier.libsvm({kernelType:'RBF', gamma: 20, cost: 10})
.train({
features: trainingPartition,
classProperty: 'landcover',
inputProperties: bands
});
var classified = image.select(bands).classify(classifier)
var palette = ['d64203', '137dea', 'c1bb4c','21a804'];
var Viz = {min: 0, max: 3, palette:palette};
Map.addLayer(classified, Viz,'result')
var test = testingPartition.classify(classifier);
var confusionMatrix = test.errorMatrix('landcover', 'classification');
print('confusionMatrix',confusionMatrix);
print('overall accuracy', confusionMatrix.accuracy());
print('kappa accuracy', confusionMatrix.kappa());(ImageCollection.mosaic: Error in map(ID=20210922T031539_20210922T032539_T49SED):
Image.select: Band pattern 'QA10' did not match any bands. Available bands: [B1, B2, B3, B4, B5, B6, B7, B8, B8A, B9, B10, B11, B12, MSK_CLASSI_OPAQUE, MSK_CLASSI_CIRRUS, MSK_CLASSI_SNOW_ICE])
最新发布