google earth engine (GEE)面向对象分类 代码
生活随笔
收集整理的這篇文章主要介紹了
google earth engine (GEE)面向对象分类 代码
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
可以前往“地信遙感數(shù)據(jù)匯”獲取更多數(shù)據(jù)。
https://www.gisrsdata.com/
?
遙感常用的三大類型分類方法:監(jiān)督分類,非監(jiān)督分類,以及面向?qū)ο蠓诸?。前兩個(gè)代碼,我很熟悉,并且都能做出比較好的效果。目前我對(duì)某市的landsat影像使用了面向?qū)ο蠓诸?#xff0c;但是結(jié)果不是讓人滿意。
我把代碼放出來(lái),希望能幫到需要的人,如果有人想要深入研究,探討一下為什么面向?qū)ο蠼Y(jié)果差強(qiáng)人意,歡迎留言:
這個(gè)是分類代碼:https://code.earthengine.google.com/66b894f4991df1a955c554f3ba368e82,可以直接使用。
//選擇數(shù)據(jù)源 var imageCollection = ee.ImageCollection('USDA/NAIP/DOQQ'); //研究區(qū) var geometry = /* color: #0b4a8b */ee.Geometry.Polygon([[[-121.89511299133301, 38.98496606984683],[-121.89511299133301, 38.909335196675435],[-121.69358253479004, 38.909335196675435],[-121.69358253479004, 38.98496606984683]]], null, false); //樣本數(shù)據(jù)(這個(gè)是US的cdl數(shù)據(jù),包含了各個(gè)地塊的農(nóng)作物類別信息) var cdl2016 = ee.Image('USDA/NASS/CDL/2016');var bands = ['R', 'G', 'B', 'N'] //數(shù)據(jù)篩選與鑲嵌 var img = imageCollection.filterDate('2015-01-01', '2017-01-01').filterBounds(geometry).mosaic() img = ee.Image(img).clip(geometry).divide(255).select(bands) Map.centerObject(geometry, 13) Map.addLayer(img, {gamma: 0.8}, 'RGBN', false) //設(shè)置種子 var seeds = ee.Algorithms.Image.Segmentation.seedGrid(36);//利用 SNIC 進(jìn)行分割,得到對(duì)象。參數(shù)的設(shè)置根據(jù)自己的需求來(lái) var snic = ee.Algorithms.Image.Segmentation.SNIC({image: img, size: 32,compactness: 5,connectivity: 8,neighborhoodSize:256,seeds: seeds }).select(['R_mean', 'G_mean', 'B_mean', 'N_mean', 'clusters'], ['R', 'G', 'B', 'N', 'clusters']) //clusters就是分割得到的一個(gè)個(gè)對(duì)象 var clusters = snic.select('clusters') Map.addLayer(clusters.randomVisualizer(), {}, 'clusters') Map.addLayer(snic, {bands: ['R', 'G', 'B'], min:0, max:1, gamma: 0.8}, 'means', false)//計(jì)算每個(gè)對(duì)象的 stdDev. var stdDev = img.addBands(clusters).reduceConnectedComponents(ee.Reducer.stdDev(), 'clusters', 256) Map.addLayer(stdDev, {min:0, max:0.1}, 'StdDev', false)var area = ee.Image.pixelArea().addBands(clusters).reduceConnectedComponents(ee.Reducer.sum(), 'clusters', 256) Map.addLayer(area, {min:50000, max: 500000}, 'Cluster Area', false)var minMax = clusters.reduceNeighborhood(ee.Reducer.minMax(), ee.Kernel.square(1)); var perimeterPixels = minMax.select(0).neq(minMax.select(1)).rename('perimeter'); Map.addLayer(perimeterPixels, {min: 0, max: 1}, 'perimeterPixels');var perimeter = perimeterPixels.addBands(clusters).reduceConnectedComponents(ee.Reducer.sum(), 'clusters', 256); Map.addLayer(perimeter, {min: 100, max: 400}, 'Perimeter size', false);var sizes = ee.Image.pixelLonLat().addBands(clusters).reduceConnectedComponents(ee.Reducer.minMax(), 'clusters', 256) var width = sizes.select('longitude_max').subtract(sizes.select('longitude_min')).rename('width') var height = sizes.select('latitude_max').subtract(sizes.select('latitude_min')).rename('height') Map.addLayer(width, {min:0, max:0.02}, 'Cluster width', false) Map.addLayer(height, {min:0, max:0.02}, 'Cluster height', false)//分類器參數(shù)設(shè)置,選擇分類依據(jù):包括了area,width等 var objectPropertiesImage = ee.Image.cat([snic.select(bands),stdDev,area,perimeter,width,height ]).float(); //選擇訓(xùn)練樣本 var training = objectPropertiesImage.addBands(cdl2016.select('cropland')).updateMask(seeds).sample(geometry, 5); //分類 var classifier = ee.Classifier.randomForest(10).train(training, 'cropland') Map.addLayer(objectPropertiesImage.classify(classifier), {min:0, max:254}, 'Classified objects')切割的對(duì)象的結(jié)果如下圖所示,針對(duì)自己的數(shù)據(jù)源,參數(shù)要做出適合的調(diào)整:
基于面向?qū)ο蟮慕Y(jié)果如下所示,可以對(duì)結(jié)果導(dǎo)出,查看具體的類別。
需要注意的兩個(gè)地方:1.分割器的選擇以及參數(shù)設(shè)置;2.分類方法的選擇。
?VX:kitmyfaceplease2;歡迎關(guān)注公眾號(hào):銳多寶的地理空間;
總結(jié)
以上是生活随笔為你收集整理的google earth engine (GEE)面向对象分类 代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据规整
- 下一篇: 马来西亚站需要注意的法律法规-扬帆跨境