GEE在線分類流程
介紹
GEE(Google Earth Engine)是一個強大的地理信息處理平臺,可以實現在線的遙感影像分析和處理。本文將介紹如何使用GEE進行在線的分類流程,包括標注樣本點、分類和精度評價。本文以2020年5月至8月的哨兵2影像為例,對區域內的土地覆蓋類型進行分類。
標注樣本點
首先,加載原始影像,進行在線的標注。
加載的影像:
加載影像的代碼如下:
var geometry = ee.Geometry.Polygon([[[121.81940156260009, 40.92383488850036],[121.81940156260009, 40.73887826797227],[121.99998933115478, 40.73887826797227],[121.99998933115478, 40.92383488850036]]], null, false)
var year=2020 //設置年份
var bandlist=['B2','B3','B4','B8','B11','B12'] //設置波段列表
var start = ee.Date(year+'-5-1'); //設置開始日期
var finish = ee.Date(year+'-8-1'); //設置結束日期var dataset = ee.ImageCollection('COPERNICUS/S2_SR') //加載哨兵2影像集合.filterDate(start, finish) //按日期過濾.filterBounds(geometry) //按范圍過濾.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20)) //按云量過濾dataset=dataset.select(bandlist); //按波段選擇
var rgbVis = {min: 0.0, max: 3000, bands: ['B4', 'B3', 'B2'], //設置RGB波段
};Map.centerObject(geometry) //地圖中心定位到范圍
print(dataset) //打印影像集合信息var image=dataset.median().clip(geometry) //計算影像集合的中值,并裁剪到范圍
Map.addLayer(image,rgbVis) //添加影像圖層
標注樣本點過程如下:
1、創建樣本點集合對象(集合名稱可以設置為類別名稱便于區分)
2、設置類別字段及其屬性(屬性為類別數字代碼)
分類
接下來,進行分類。選擇隨機森林算法作為分類器(也可選擇GEE官方其他分類器)。將樣本點集合分為訓練集和測試集,用訓練集來訓練分類器,用測試集來評估分類器的性能。
分類主要包括合并樣本點集合、劃分訓練集和測試集、訓練分類器、應用分類器、添加分類圖層。分類的結果如下圖所示:
分類的代碼如下:
var sample=danshui.merge(haishui).merge(jianpeng).merge(nongtian).merge(luwie).merge(jianzhu)
.merge(tantu).merge(caodi) //合并樣本點集合var withRandom = sample.randomColumn('random'); //給樣本點集合添加隨機數列
var split = 0.7; //七成訓練 三成測試
var trainingPartition2 = withRandom.filter(ee.Filter.lt('random', split)); //按隨機數列劃分訓練集
var testingPartition = withRandom.filter(ee.Filter.gte('random', split)); //按隨機數列劃分測試集var trainingPartition=image.sampleRegions({ //從影像中提取訓練集的像素值collection: trainingPartition2, //輸入訓練集scale:10, //設置空間分辨率properties: ['Map'], //設置類別字段})
var classifier = ee.Classifier.smileRandomForest(100).train({ //訓練隨機森林分類器features: trainingPartition, //輸入訓練集classProperty:'Map', //設置類別字段// inputProperties :['B4', 'B3', 'B2']
});
var classied=image.classify(classifier,"smileRandomForest"); //應用分類器Map.addLayer(classied.randomVisualizer()) //添加分類圖層
精度評價
最后需要評估分類器的性能,計算分類精度。
可以通過以下代碼來評估分類精度:
var pixelValues2=classied.sampleRegions({ //從影像中提取測試集的像素值collection: testingPartition, //輸入測試集scale:10,
});
print("pixelValues2",pixelValues2); //打印測試集信息
var confusionMatrix2 = pixelValues2.errorMatrix("Map", 'smileRandomForest');//,[10,20,30,40,50,60,80,90] //計算混淆矩陣
print('confusionMatrix', confusionMatrix2); //打印混淆矩陣
print('accuracy()', confusionMatrix2.accuracy()); //打印總體精度
// print('consumersAccuracy', confusionMatrix2.consumersAccuracy());
print('kappa()', confusionMatrix2.kappa()); //打印Kappa系數
//print('order()', confusionMatrix.order());
// print('producersAccuracy()', confusionMatrix2.producersAccuracy());