Geographic Information Systems Asked by Pedro Rincon on December 20, 2020
I have my code as:
function Kelv_Cels(image){
// This function transform Kelvin to Celsius
var Kelvin = image.select("B6").multiply(0.1).rename('Temp_Celsius');
var Celsius = Kelvin.subtract(273.15);
return image.addBands(Celsius);
}
var start = 2007;
var end = 2008;
var landsat7_SR = ee.ImageCollection("LANDSAT/LE07/C01/T1_SR")
.filterMetadata('WRS_PATH', 'equals', 29)
.filterMetadata('WRS_ROW', 'equals', 47)
.filterMetadata('CLOUD_COVER', 'less_than',30)
.filterDate(start+'-01-01',end +'-12-31')
.map(addNDVI)
.map(Kelv_Cels)
.map(Clip_state);
print(landsat7_SR);
var chart_max = ui.Chart.image.seriesByRegion(
landsat7_SR,clinic_shp, ee.Reducer.max() , "Temp_Celsius", 30, 'system:time_start', 'layer')
.setChartType('ScatterChart')
.setOptions({
title: 'Max temperature over time in clinics of State of Colima, Mexico',
vAxis: {title: 'Temperature (Celsius)'},
lineWidth: 1,
pointSize: 4,
series: {
0: {color: '7B241C'},
1: {color: '76448A'},
2: {color: '1A5276'},
3: {color: '117864'},
4: {color: '239B56'},
5: {color: '9A7D0A'},
6: {color: '873600'},
7: {color: 'B3B6B7'},
8: {color: '5F6A6A'},
9: {color: 'EC7063'},
10: {color: 'A569BD'},
11: {color: '16A085'}
}});
print(chart_max)
Clip_state is a vector of my state.
And what i want is to extract the stadistics of each region, but as you can see in the attached image.
But some pixels have invalid data, and i use this code to try to fix this data.
function correc_image(image_0){
var image = image_0.select('Temp_Celsius');
var percentile = image.reduceRegion(ee.Reducer.percentile([25,75]),Colima_shp );
var Q3 = percentile.get('Temp_Celsius_p75').getInfo();
var Q1 = percentile.get('Temp_Celsius_p25').getInfo();
var IQR = Q3 - Q1;
var LV = Q1 - 1.5*(IQR);
var HV = Q3 + 1.5*(IQR);
var HV_image = image.lt(HV);
var LV_image = image.gt(LV);
var image1 = image.multiply(HV_image).multiply(LV_image).rename('Temp_filtrada');
return image_0.addBands(image1);
}
landsat7_SR = landsat7_SR.map(correc_image);
And i works on a sigle image, but when I use it in a collection it gives me the error.
ImageCollection (Error)
Parameter 'value' is required.
Did you what can I do to solve this problem?
]1
you cannot use client-side functions in a server-side mapping. Read this. Reworking your function to server-side should work:
function correc_image(image_0){
var image = image_0.select('Temp_Celsius');
var percentile = image.reduceRegion(ee.Reducer.percentile([25,75]),geometry );
var Q3 = percentile.getNumber('Temp_Celsius_p75'); //
var Q1 = percentile.getNumber('Temp_Celsius_p25');
var IQR = Q3.subtract(Q1);
var LV = Q1.subtract(1.5).multiply(IQR);
var HV = Q3.add(1.5).multiply(IQR);
var HV_image = image.lt(ee.Image(HV));
var LV_image = image.gt(ee.Image(LV));
var image1 = image.multiply(HV_image).multiply(LV_image).rename('Temp_filtrada');
return image_0.addBands(image1);
}
Answered by Kuik on December 20, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP