GEE必须会教程

您所在的位置:网站首页 eps怎么计算所有植被面积的公式 GEE必须会教程

GEE必须会教程

2024-07-13 06:28| 来源: 网络整理| 查看: 265

植被覆盖度(FVC)的计算是遥感上非常重要的一个研究领域,因事务繁忙,今天小编先带来FVC的全文代码,给大家试试,后期会出一期专栏进行代码的详细介绍:

今天福利满满,直接上代码,修改研究区域即可用。

var region=ee.FeatureCollection('users/hesuixinya511/SouthWest_China'); var empty = ee.Image().toByte(); var outline = ee.Image() .toByte() .paint({ featureCollection:region, color:0, width:2 }); Map.addLayer(outline, {palette: "black"}, "outline"); Map.centerObject(region,6); var MOD13=ee.ImageCollection("MODIS/006/MOD13Q1") .select('NDVI') .filterBounds(region) .filter(ee.Filter.calendarRange(6, 8, 'month')) .filter(ee.Filter.calendarRange(2020, 2020, 'year')); var NDVI=MOD13.select('NDVI').mean().clip(region).divide(10000); var Vis = { min: 0.0, max: 1.0, palette: [ 'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01', '012E01', '011D01', '011301' ], }; Map.addLayer(NDVI,Vis,'NDVI'); function FVC_Cal_MOD (img){ var dict = img.reduceRegion({ reducer: ee.Reducer.percentile([5, 95]), geometry: region, scale: 500, maxPixels: 1e13, tileScale: 16 }); var _p5 = ee.Number(dict.get("NDVI_p5")); var _p95 = ee.Number(dict.get("NDVI_p95")); var imgFVC = ((img.subtract(_p5)).divide(_p95.subtract(_p5))).float(); var FVC=((imgFVC.lt(0)).multiply(0)) .add(((imgFVC.gt(0)).and(imgFVC.lte(1))).multiply(imgFVC)) .add((imgFVC.gt(1)).multiply(1)); return FVC.rename("FVC"); } function addFVCbands(img){ var FVC=FVC_Cal_MOD (img); return img.addBands(FVC); } var FVCcollection=MOD13.select('NDVI').map(addFVCbands); print(FVCcollection,'FVCcolle'); var FVC=FVCcollection.mean().select('FVC').clip(region); Map.addLayer(FVC,Vis,'FVC'); function getHistogram(Img,bandname,geometry) { var hist = Img.reduceRegion({ reducer: ee.Reducer.autoHistogram(), geometry: geometry, scale: 250, maxPixels: 1e13, }); var histArray = ee.Array(hist.get(bandname)); var binBottom = histArray.slice(1, 0, 1); var nPixels = histArray.slice(1, 1, null); var histColumnFromArray = ui.Chart.array.values({array: nPixels, axis: 0, xLabels: binBottom}) .setChartType('LineChart') .setOptions({ title: bandname+' histogram', hAxis: {title: bandname}, vAxis: {title: 'Pixel count'}, pointSize: 0, lineSize: 2, colors: ['1b7837'], legend: {position: 'none'} }); return histColumnFromArray; } var NDVI_histogram=(getHistogram(NDVI,'NDVI',region)); var FVC_histogram=(getHistogram(FVC,'FVC',region)); print(NDVI_histogram); print(FVC_histogram); var FVC_Class=FVC.where(FVC.lt(0.1),1) .where(((FVC.gte(0.1)).and(FVC.lt(0.3))),2) .where(((FVC.gte(0.3)).and(FVC.lt(0.5))),3) .where(((FVC.gte(0.5)).and(FVC.lt(0.7))),4) .where(FVC.gt(0.7),5); Map.addLayer(FVC_Class,{min:1,max:5,palette:['DCDCDC','FFEBCD','99B718','529400','011301']},'FVC_Class'); // 添加图例 function addLegend(palette, names) { var panel = ui.Panel(); panel.style().set({ width: '200px', position: 'bottom-right' }); var intro = ui.Panel([ ui.Label({ value: '植被覆盖度等级', style: {fontSize: '20px', fontWeight: 'bold'} }), ]); panel.add(intro); Map.add(panel); // 添加每一列图例颜色以及说明 var addLegendLabel = function(color, name) { var showColor = ui.Label({ style: { backgroundColor: color, padding: '8px', margin: '0 0 8px 0' } }); var desc = ui.Label({ value: name, style: {margin: '0 0 4px 4px'} }); //颜色和说明是水平放置 return ui.Panel({ widgets: [showColor, desc], layout: ui.Panel.Layout.Flow('horizontal') }); }; //添加所有的图例列表 for (var i = 0; i < palette.length; i++) { var label = addLegendLabel(palette[i], names[i]); panel.add(label); } // ui.root.insert(0, legend); } var palette = ['DCDCDC','FFEBCD','99B718','529400','011301']; var names = ["(I) 低覆盖度","(II) 较低覆盖度","(III) 中等覆盖度","(IV) 较高覆盖度","(V) 高覆盖度"]; addLegend(palette, names); var dict = ee.Image.pixelArea() .addBands(FVC_Class.int()) .reduceRegion({ reducer:ee.Reducer.sum().group({ groupField:1, groupName:'type', }), geometry:region, scale:250, maxPixels:1e13 }); var groups = ee.List(dict.get("groups")); var typeNames = ee.List(["I", "II","III","IV","V"]); var featureList = groups.map(function(group){ group = ee.Dictionary(group); var area = ee.Number(group.get("sum")); area = area.divide(1000000); //km2 var type = ee.Number(group.get("type")); var f = ee.Feature(null, { "type": type, "area": area, "name": typeNames.get(type.subtract(1)) }); return f; }); var areaFCol = ee.FeatureCollection(featureList); var totalArea = ee.Number(areaFCol.aggregate_sum("area")); areaFCol = areaFCol.map(function(f){ var typearea = ee.Number(f.get("area")); f = f.set("type_area", typearea); return f; }); var Area_table=(ui.Chart.feature.byFeature(areaFCol.select(['name','type_area']), 'name') .setChartType('Table')); print(Area_table)

看看结果吧!还顺便帮大家统计了面积和像元直方图哦! 很不错呦!

希望对大家有帮助,有不懂的大家可以私信联系小编,也可以期待后续小编推出的的详细博客,本期就先到这里了,谢谢大家支持!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3