Reduzierung über eine Bildersammlung Google Earth Engine

Sep 09 2020

Ich verwende den CHIRPS-Datensatz (täglicher Niederschlag), um den mittleren, mittleren, minimalen und maximalen Niederschlag innerhalb eines bestimmten Zeitrahmens abzuleiten. Dann möchte ich die Werte an bestimmten Stellen in einem Punkt-Shapefile extrahieren und die Ergebnisse in einer Tabelle speichern. Das Skript scheint zu funktionieren, aber die Ausgabe für den Median gibt Nullen (0) als Wert zurück. Bitte beachten Sie das Skript unten

var lat = 34.35;
var point = ee.Geometry.Point(lat, lng); 
//var aoi = point.buffer(100000); // Create an area (1km buffer around point)
var country = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017')
.filter(ee.Filter.eq('country_co', 'AF'));
var aoi = country;

Map.setCenter(lng, lat, 5); // Center the map on this location, zoom level 10

var start = '2018-02-15'; // initial date of the image collection
var end = '2018-07-15'; //final date of the image collection

var p1 = ee.Geometry.Point([69.78086, 34.65411])
var p2 = ee.Geometry.Point([61.82234, 30.66048])
var table = ee.FeatureCollection(ee.List([ee.Feature(p1),ee.Feature(p2)]))

var dataset = ee.ImageCollection('UCSB-CHG/CHIRPS/DAILY')
    .filterDate(start, end)
    .filterBounds(aoi);
    
var PrMean = dataset.mean().rename('PrMean');

var PrMedian = dataset.median().rename('PrMedian');

var PrMin = dataset.min().rename('PrMin');

var PrMax = dataset.max().rename('PrMax');

var composites = PrMean
      .addBands(PrMedian)
      .addBands(PrMin)
      .addBands(PrMax);
  

var YieldLocations = ee.FeatureCollection(table);

var YPrec = composites.reduceRegions(YieldLocations, ee.Reducer.max(), 1);

print(YPrec);```

Antworten

2 JepsonNomad Sep 09 2020 at 08:09

Es sieht so aus, als ob Ihr Code wie erwartet funktioniert. Versuchen Sie, das folgende Diagramm am Ende Ihres Skripts hinzuzufügen:

var chart = ui.Chart.image.seriesByRegion({
    imageCollection: dataset,
    regions: YieldLocations,
    reducer: ee.Reducer.mean()
    }).setOptions({
      interpolateNulls: true,
      lineWidth: 1,
      pointSize: 3,
      title: 'Precip over Time',
      colors: ["ff0000","0000ff"],
      vAxis: {title: 'Precip'},
      hAxis: {title: 'Date', format: 'YYYY-MMM', gridlines: {count: 12}}
    });
print(chart);

Sie werden sehen, dass der Großteil Ihrer Niederschlagsdaten für beide Punkte auf 0 fällt. Da mehr als die Hälfte der Werte 0 sind, ist der Median 0 (z. B. in der Reihe 0,0,0,0,0,0, 1,3,5,8 der Mittelwert ist 1,7, aber der Median ist 0).