Problem mit Sentinel 1-Bildern in Google Earth Engine

Oct 04 2020

Ich versuche, Otsu-Algorithmus auf S1-Bilder anzuwenden, beginnend mit dem Start bis zum Datum in meinem Untersuchungsgebiet für die Kartierung von Gewässern. Ich führe otsu durch, ohne einen Datumsfilter für den Satellitenpass anzuwenden, damit ich mehr Bilder erhalten kann. Aber ich bekomme den Fehler

ImageCollection (Fehler) Fehler in der Karte (ID = S1A_IW_GRDH_1SSV_20160525T235440_20160525T235507_011422_011607_60C4): Dictionary.get: Dictionary enthält keinen Schlüssel: BucketMeans.

Dann habe ich versucht, den obigen Fehler durch Anwenden zu beseitigen

.filter(ee.Filter.neq('system:id', 'COPERNICUS/S1_GRD/S1A_IW_GRDH_1SSV_20160525T235440_20160525T235507_011422_011607_60C4'))

und wieder bekomme ich fehler

ImageCollection (Fehler) Fehler in der Karte (ID = S1A_IW_GRDH_1SSV_20160805T235445_20160805T235511_012472_0137E8_08F2): Dictionary.get: Dictionary enthält keinen Schlüssel: BucketMeans.

und ich wende einen anderen Filter an

.filter(ee.Filter.neq('system:id','COPERNICUS/S1_GRD/S1A_IW_GRDH_1SSV_20160805T235445_20160805T235511_012472_0137E8_08F2'))

Aber nichts funktioniert, es geht einfach weiter. Ich habe verstanden, dass das Problem nur bei absteigenden Pässen auftritt. Wenn ich also einen Filter setze, um den aufsteigenden Durchgang zu erhalten, wird der Ausgabefortschritt fehlerfrei angezeigt, aber im absteigenden Durchgang wird er nicht gleich angewendet.

Hier ist mein Code ..

Antworten

5 Nick Oct 07 2020 at 00:51

Das Problem ist, dass einige der S1-Bilder in Ihrer Sammlung vollständig maskiert sind, nachdem Sie sie an die Geometrie Ihres Untersuchungsbereichs angepasst haben. Um dies zu beheben, filtern Sie diese Bilder nach dem Erstellen Ihrer ursprünglichen Bildersammlung heraus ( angepasst aus diesem Beitrag ):

var s1Collection = s1Collection.map(function(img){
  // unmask each image in the collection
  var unmasked = img.unmask(-99).eq(-99);
  // reduce histogram on each image and set the keys as properties (key '1' will be masked pixels)
  var rR = unmasked.reduceRegion({reducer: ee.Reducer.frequencyHistogram(),
                               geometry: img.geometry(),
                               scale: 100,
                               bestEffort: true});
  var newProperties = ee.Dictionary(rR.get('VV'));
  return img.set(newProperties)
  
})
var s1Collection = ee.ImageCollection(s1Collection).filter(ee.Filter.notNull(['0']))
print(s1Collection, 'Clean S1 Collection');

Längere Erklärung

Wenn Sie das am 25.05.2016 (aus Ihrem Beispiel) aufgenommene Bild untersuchen, überlappt der Bildabdruck geringfügig Ihren Untersuchungsbereich und wird daher nicht ausgeschlossen, wenn Sie dies tun .filterBounds(Jinjiram). Wie Sie unten sehen können, befinden sich keine Daten in dem JinjiramBereich. Nach dem Ausschneiden wird das gesamte Bild maskiert:

Aus diesem Grund hat das Histogrammwörterbuch Nullwerte, da keine zusammenzufassenden Daten vorhanden sind. Sehen Sie den Unterschied unten: