当前位置:网站首页>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);
边栏推荐
- 关于海康ipc的几个参数
- I wish you all the best and the year of the tiger
- kubernetes的简单化数据存储StorageClass(建立和删除以及初步使用)
- 不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程
- Line test - graphic reasoning -5- one stroke class
- 二叉树(Binary Tree)
- OC variable parameter transfer
- 小程序多种开发方式对比-跨端?低代码?原生?还是云开发?
- Why does the market need low code?
- Line test - graphic reasoning - 1 - Chinese character class
猜你喜欢
Line test - graphic reasoning - 1 - Chinese character class
There is another problem just online... Warm
Develop those things: go plus c.free to free memory, and what are the reasons for compilation errors?
双非大厂测试员亲述:对测试员来说,学历重要吗?
微信论坛交流小程序系统毕业设计毕设(6)开题答辩PPT
Sword finger offer 55 - I. depth of binary tree
微信论坛交流小程序系统毕业设计毕设(7)中期检查报告
数据库每日一题---第22天:最后一次登录
14、 Two methods of database export and import
Line test - graphic reasoning - 6 - similar graphic classes
随机推荐
Transparent i/o model from beginning to end
Use JfreeChart to generate curves, histograms, pie charts, and distribution charts and display them to jsp-2
Adrnoid开发系列(二十五):使用AlertDialog创建各种类型的对话框
Brush question 4
位运算(Bit Operation)
2021-01-11
Quelles sont les similitudes et les différences entre les communautés intelligentes et les villes intelligentes?
Dynamics 365 查找字段过滤
不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程
I wish you all the best and the year of the tiger
leetcode-520. 检测大写字母-js
Grid
DTC社群运营怎么做?
嵌入式音频开发中的两种曲线
网络安全-CSRF
Unity dynamically merges mesh textures
今日创见|企业促进创新的5大关键要素
【测试面试题】页面很卡的原因分析及解决方案
Advantages and disadvantages of rest ful API
2021-01-12