当前位置:网站首页>Gee (IV): calculate the correlation between two variables (images) and draw a scatter diagram
Gee (IV): calculate the correlation between two variables (images) and draw a scatter diagram
2022-07-07 23:12:00 【BetterQ.】
Recently used Google Earth Engine(GEE) Analyze the elevation and NDVI The relevance of , And draw the scatter diagram of the two , Calculate the coefficient of determination .
The calculation mainly uses GEE Medium Chart ui.Chart.image.byRegion()
, The elevation and NDVI The scatter diagram of is drawn first , Add a trend line , Calculate the coefficient of determination , You can know how high the correlation between the two is .
NDVI- The implementation code of elevation scatter diagram and determination coefficient calculation is as follows :
// Study area , You can draw or import by yourself
var roi = /* color: #d63000 */ee.Geometry.Polygon(
[[[104.34385678174718, 27.233899188878446],
[114.80284115674718, 28.477166904461537],
[117.52745053174718, 34.61402019968164],
[111.99034115674718, 40.99546927185892],
[95.11534115674718, 37.87379212761336]]]);
// Import DEM
var DEM=ee.Image("CGIAR/SRTM90_V4").reproject('SR-ORG:6974',null,500);
// from DEM Sample points from , Select here 500 individual
var rroi = DEM.sample(
{
region: roi, scale: 30, numPixels: 500, geometries: true});
// Import NDVI data
var ndvi=ee.ImageCollection('MODIS/006/MOD13A1')
.filter(ee.Filter.date('2020-01-01', '2020-02-01'))
.first()
.multiply(0.0001);
// Set chart properties , Including style, color, etc
var chartStyle = {
title: 'NDVI-DEM',
hAxis: {
title: 'elevation',
titleTextStyle: {
italic: false, bold: true},
gridlines: {
color: 'FFFFFF'}
},
vAxis: {
title: 'NDVI',
titleTextStyle: {
italic: false, bold: true},
gridlines: {
color: 'FFFFFF'},
},
pointSize: 4,
dataOpacity: 0.6,
chartArea: {
backgroundColor: 'EBEBEB'},
// Add trendline
trendlines: {
0: {
// add a trend line to the 1st series
type: 'polynomial', // or 'polynomial', 'exponential'
color: 'green',
showR2:'true', //show R2 cofficient
lineWidth: 5,
opacity: 0.2,
visibleInLegend: true,
}
}
};
// Draw a scatter plot
var charten=ui.Chart.image.byRegion({
image:ndvi.select('NDVI'),
regions:rroi,
reducer:ee.Reducer.mean(),
scale:500,
xProperty: 'elevation'
});
charten.setChartType('ScatterChart').setOptions(chartStyle);
print(charten)
The result is shown in the figure :
.
.
.
.
The relationship between temperature and elevation is also made here , Implementation code :
// Load SRTM elevation data.
var elev = ee.Image('CGIAR/SRTM90_V4').select('elevation');
// Subset Colorado from the TIGER States feature collection.
var colorado = ee.FeatureCollection('TIGER/2018/States')
.filter(ee.Filter.eq('NAME', 'Colorado'));
// Draw a random sample of elevation points from within Colorado.
var samp = elev.sample(
{
region: colorado, scale: 30, numPixels: 500, geometries: true});
// Load PRISM climate normals image collection; convert images to bands.
var normClim = ee.ImageCollection('OREGONSTATE/PRISM/Norm81m').toBands();
// Define the chart and print it to the console.
var chartte = ui.Chart.image
.byRegion({
image: normClim.select(['01_tmean', '07_tmean']),
regions: samp,
reducer: ee.Reducer.mean(),
scale: 500,
xProperty: 'elevation'
})
.setSeriesNames(['Jan', 'Jul'])
.setChartType('ScatterChart')
.setOptions({
title: 'Average Monthly Colorado Temperature by Elevation',
hAxis: {
title: 'Elevation (m)',
titleTextStyle: {
italic: false, bold: true}
},
vAxis: {
title: 'Temperature (°C)',
titleTextStyle: {
italic: false, bold: true}
},
pointSize: 4,
dataOpacity: 0.6,
colors: ['1d6b99', 'cf513e'],
trendlines: {
0: {
// add a trend line to the 1st series
type: 'linear', // or 'polynomial', 'exponential'
color: 'green',
showR2:'true', //R2 cofficient
lineWidth: 5,
opacity: 0.2,
visibleInLegend: true,
},
1: {
// add a trend line to the 1st series
type: 'linear', // or 'polynomial', 'exponential'
color: 'green',
showR2:'true', //R2 cofficient
lineWidth: 5,
opacity: 0.2,
visibleInLegend: true,
}
}});
print(chartte);
.
The result is shown in Fig. :
.
.
.
.
And draw the curve of vegetation index changing with time :
// Import the example feature collection and subset the glassland feature.
var grassland = ee.FeatureCollection('projects/google/charts_feature_example')
.filter(ee.Filter.eq('label', 'Grassland'));
// Load MODIS vegetation indices data and subset a decade of images.
var vegIndices = ee.ImageCollection('MODIS/006/MOD13A1')
.filter(ee.Filter.date('2010-01-01', '2020-01-01'))
.select(['NDVI', 'EVI']);
// Set chart style properties.
var chartStyle = {
title: 'Average Vegetation Index Value by Day of Year for Grassland',
hAxis: {
title: 'Day of year',
titleTextStyle: {
italic: false, bold: true},
gridlines: {
color: 'FFFFFF'}
},
vAxis: {
title: 'Vegetation index (x1e4)',
titleTextStyle: {
italic: false, bold: true},
gridlines: {
color: 'FFFFFF'},
format: 'short',
baselineColor: 'FFFFFF'
},
series: {
0: {
lineWidth: 3, color: 'E37D05', pointSize: 7},
1: {
lineWidth: 7, color: '1D6B99', lineDashStyle: [4, 4]}
},
chartArea: {
backgroundColor: 'EBEBEB'},
trendlines: {
0: {
// add a trend line to the 1st series
type: 'linear', // or 'polynomial', 'exponential'
color: 'green',
showR2:'true',
lineWidth: 5,
opacity: 0.2,
visibleInLegend: true,
}
}
};
// Define the chart.
var chart =
ui.Chart.image
.doySeries({
imageCollection: vegIndices,
region: grassland,
regionReducer: ee.Reducer.mean(),
scale: 500,
yearReducer: ee.Reducer.mean(),
startDay: 1,
endDay: 365
})
.setSeriesNames(['EVI', 'NDVI']);
// Apply custom style properties to the chart.
chart.setOptions(chartStyle);
// Print the chart to the console.
print(chart);
边栏推荐
猜你喜欢
小程序多种开发方式对比-跨端?低代码?原生?还是云开发?
Cascade-LSTM: A Tree-Structured Neural Classifier for Detecting Misinformation Cascades-KDD2020
14、 Two methods of database export and import
Use JfreeChart to generate curves, histograms, pie charts, and distribution charts and display them to jsp-2
PMP项目管理考试过关口诀-1
一次搞明白 Session、Cookie、Token,面试问题全稿定
微信论坛交流小程序系统毕业设计毕设(6)开题答辩PPT
肠道里的微生物和皮肤上的一样吗?
Comparison of various development methods of applets - cross end? Low code? Native? Or cloud development?
消息队列与快递柜之间妙不可言的关系
随机推荐
[untitled] reprint melting ice - track icedid server with a few simple steps
网络安全-钓鱼
面试百问:如何测试App性能?
微信论坛交流小程序系统毕业设计毕设(1)开发概要
【测试面试题】页面很卡的原因分析及解决方案
[language programming] exe virus code example
Software test classification
Network security - install CentOS
行测-图形推理-1-汉字类
Line test graph reasoning graph group class
今日创见|企业促进创新的5大关键要素
Unity and webgl love each other
DTC社群运营怎么做?
三菱PLC slmp(mc)协议
解决:信息中插入avi格式的视频时,提示“unsupported video format”
线上面试,该如何更好的表现自己?这样做,提高50%通过率~
Adrnoid开发系列(二十五):使用AlertDialog创建各种类型的对话框
【微服务|SCG】gateway整合sentinel
GBU1510-ASEMI电源专用15A整流桥GBU1510
Network security sqlmap and DVWA explosion