【Google Earth Engine】GEE實例學習(3)--土地利用分類


在數字圖像處理中最多的就是應該對圖像進行土地利用分類,因此下面是監督分類的流程以及代碼案例。

1.首先分類最開始應該建立樣本數據集,在這里我分了四類,然后就開始自己的采樣吧。

設立好分類后,對目標進行分類。

然后對每個樣本進行顏色選擇和屬性定義

 2.下面就開始進行編程啦

//選擇需要裁剪的矢量數據 
var cc = ee.FeatureCollection("users/wangchengcong/CC_5ring");
//去雲函數 
function maskL8sr(image) {
  var cloudShadowBitMask = (1 << 3);
  var cloudsBitMask = (1 << 5);
  var qa = image.select('pixel_qa');
  var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
                 .and(qa.bitwiseAnd(cloudsBitMask).eq(0));
  return image.updateMask(mask);
}
//選擇柵格數據集 
var cc2019 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
                  .filterDate('2019-05-01', '2019-9-30')
                  .map(maskL8sr)
                  .median();
//定義光譜指數                  
var mndwi = cc2019.normalizedDifference(['B3', 'B6']).rename('MNDWI');//計算MNDWI
var ndbi = cc2019.normalizedDifference(['B6', 'B5']).rename('NDBI');//計算NDBI
var ndvi = cc2019.normalizedDifference(['B5', 'B4']).rename('NDVI');//計算NDVI
cc2019=cc2019.addBands(ndvi).addBands(ndbi).addBands(mndwi)
// 使用下列波段作為特征
var classNames = building.merge(water).merge(tree).merge(crop);
var bands = ['B2', 'B3', 'B4', 'B5', 'B6', 'B7','MNDWI','NDBI','NDVI'];
// 通過要素集在Landsat-8中選取樣本,把landcover屬性賦予樣本
var training = cc2019.select(bands).sampleRegions({
  collection: classNames,
  properties: ['landcover'],
  scale: 30
});
//精度評價 
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%的樣本作為測試樣本
//分類方法選擇smileCart() randomForest() minimumDistance libsvm
var classifier = ee.Classifier.libsvm().train({
  features: trainingPartition,
  classProperty: 'landcover',
  inputProperties: bands
});
//對Landsat-8進行分類
var class_img = cc2019.select(bands).classify(classifier);
//運用測試樣本分類,確定要進行函數運算的數據集以及函數
var test = testingPartition.classify(classifier);
//計算混淆矩陣
var confusionMatrix = test.errorMatrix('landcover', 'classification');
print('confusionMatrix',confusionMatrix);//面板上顯示混淆矩陣
print('overall accuracy', confusionMatrix.accuracy());//面板上顯示總體精度
print('kappa accuracy', confusionMatrix.kappa());//面板上顯示kappa值

Map.centerObject(cc)
Map.addLayer(cc);
Map.addLayer(class_img.clip(cc), {min: 1, max: 4, palette: ['orange', 'blue', 'green','yellow']});

3.分類好啦

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM