2. Structure du script

2.6. Add Panel for displaying charts

L'extrait de code ci-dessous ajoute un panneau dans le côté gauche de l'application Web pour afficher du texte et des résultats de clics comme des valeurs et des graphiques.


// Maintenant, pour l'application web, nous voulons créer un panneau gauche qui affichera

// graphique des séries temporelles en cliquant sur la carte à l'intérieur de l'ulb

// Créons deux graphiques : i) les précipitations mensuelles et ii) l'ETIa décadaire de deux années

// Affiche également la valeur d'élévation lors d'un clic sur un pixel

 

///////////////////Insérer des panneaux pour afficher les graphiques et les résultats/////////

// Créons un panneau vide et ajoutons les autres panneaux en tant que sous-panneaux à celui-ci

var panel = ui.Panel({

    style: {fontSize: '20px'color: '114982'}

});

 

// Créez un panneau pour afficher des labels comme du texte

var text = ui.Panel([

  ui.Label({

    value: 'My first App',

    style: {fontSize: '30px'fontWeight: 'bold'color: '#2F4F4F'}

  }),

  ui.Label({

    value:'Click a point on the map to explore the variable over time',

    style: {fontSize: '14px'fontWeight: 'bold'maxWidth: '400px'color: '#2F4F4F'}

  }),

]);

// Ajoutez le nouveau panneau de texte au panneau de base.

panel.add(text);

 

// Créer un panneau pour afficher la valeur de l'élévation au clic

var inspector = ui.Panel([ui.Label('Click to get Elevation')]);

panel.add(inspector);

 

// Nous allons définir ci-dessous des panneaux pour afficher des objets dynamiques -

// Valeurs d'élévation, carte des précipitations, carte ETIa

 

Map.onClick(function(coords) {

   // Ajouter un graphe pour mettre le tableau des précipitations mensuelles

  var point = ee.Geometry.Point(coords.loncoords.lat);

  var dot = ui.Map.Layer(point, {color: 'FF0000'});

  Map.layers().set(1dot);

  var sample = dsm_ulb.sample(point30);

  var computedValue = sample.first().get('DSM');

  // Demander la valeur au serveur.

  computedValue.evaluate(function(result) {

  // Lorsque le serveur renvoie la valeur, l'afficher.

  inspector.widgets().set(0ui.Label({

  value: 'Elevation: ' + result,

    }));

  });

    var chart1 = ui.Chart.image.series({

    imageCollection: pcp_monthly.select(['precipitation']),

    region: point

    reducer: ee.Reducer.mean(), 

    scale: 30

  });

  chart1.setOptions({

    title: 'Monthly Precipitation 2019',

    vAxis: {title: 'P (mm)'gridlines: {count: 10}},

    hAxis: {title: 'month'format: 'MM-yy'gridlines: {count: 10}},

    label: 'ETa',

    width: 250,

    height: 250,

    //interpolateNulls: true,

    //curveType: 'function'

  });

  chart1.setChartType('ColumnChart');

  panel.widgets().set(2chart1);

       //////second graph

    var chart2 = ui.Chart.image.series({

    imageCollection: ETIa_filt.select('L1_AETI_D'),

    region: point

    reducer: ee.Reducer.mean(), 

    scale: 250

  });

  chart2.setOptions({

    title: 'Dekadal ETIa',

    vAxis: {title: 'ETIa'gridlines: {count: 10}, maxValue: 0.5minValue: 0 },

    hAxis: {title: 'month'format: 'MM-yy'gridlines: {count: 10}},

    width: 250,

    height: 250,

    colors: ['#09F310'],

    interpolateNulls: true,

    curveType: 'function'

  });

  panel.widgets().set(3chart2);

});

 

// Ajouter le panneau défini ci-dessus à la racine

ui.root.insert(0panel);