Allgemeine Fragen
Ich habe ein Problem und brauche Hilfe.
Posten Sie eine Frage gemäß dieser Anleitung und geben Sie so viele Informationen wie möglich an (siehe Anleitung für gute Fragen von Stack Overflow). Das bedeutet in der Regel Folgendes:
Senden Sie einen Link zu einem Skript im Code-Editor (klicken Sie auf die Schaltfläche „Link abrufen“, um den Link zu erhalten).
Freigabe aller Assets, die zum Ausführen des Scripts erforderlich sind
Geben Sie bei fehlgeschlagenen Batchaufgaben die ID der fehlgeschlagenen Aufgabe an. Aufgaben-IDs sehen so aus:
4C25GIJBMB52PXTEJTF4JLGL. Sie finden sie im Code-Editor auf dem Tab „Task“ (Aufgabe). Weitere Informationen
Wo finde ich Informationen zur Earth Engine-Architektur?
Siehe diesen Artikel: Gorelick et al. 2017.
Gibt es empfohlene Earth Engine-Anleitungen, die nicht von Google erstellt wurden?
Weitere Informationen finden Sie auf den Seiten EDU und Schulungsressourcen.
Gibt es empfohlene Tutorials zur Fernerkundung?
In diesem kostenlosen EE-Kurs von Ujaval Gandhi finden Sie ein Video mit einer Einführung in die Fernerkundung.
Earth Engine-Programmierung
Welche Codierungsfehler treten häufig auf?
Weitere Informationen finden Sie im Debugging-Leitfaden.
Warum erhalte ich die Fehlermeldung „… ist keine Funktion“?
Dieser Fehler tritt auf, wenn Earth Engine die aufgerufene Methode nicht finden kann. Prüfen Sie folgende häufige Ursachen:
Rechtschreibung oder Groß-/Kleinschreibung: Bei Methoden wird zwischen Groß- und Kleinschreibung unterschieden. Prüfen Sie die Schreibweise anhand der API-Referenz.
Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)
Fehlende Typumwandlungen: Werte, die von Funktionen wie .get() zurückgegeben werden, sind generische ee.ComputedObject-Instanzen und müssen explizit umgewandelt werden. Siehe Unbekannte Objekttypumwandlung.
Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)
Client- und Servermethoden mischen: Achten Sie darauf, dass Sie keine Standard-JavaScript- oder Python-Methoden (wie .push() oder .append()) für Earth Engine-Objekte verwenden. Weitere Informationen finden Sie unter Client- und Serverfunktionen nicht mischen.
Error: list.push(4) or list.append(4) -> Correct: list.add(4)
Nicht verfügbare Methoden: Wenn das Objekt richtig typisiert ist und die Methode in der Dokumentation vorhanden ist oder zuvor funktioniert hat, jetzt aber fehlschlägt, melden Sie einen Fehler.
Warum kann ich keine einfachen mathematischen Berechnungen wie ee.Image("image") * 2 verwenden?
In EE sollten Sie serverseitige und clientseitige Objekte oder Vorgänge nicht mischen. Alle Vorgänge für EE-Objekte werden serverseitig ausgeführt. Clientseitige Berechnungen funktionieren nicht wie beabsichtigt. Weitere Informationen finden Sie auf dieser Seite.
Wie kann ich for-Schleifen oder if/else-Anweisungen verwenden?
Die Earth Engine-Programmierung erfolgt mit einer funktionalen Sprache. Schleifen und bedingte Vorgänge sollten daher mit entsprechenden Konzepten wie map oder filter ausgedrückt werden. Weitere Informationen finden Sie auf dieser Seite.
Wie kann ich Textlabels in meinem Bild oder Video anzeigen lassen?
Es gibt keine integrierte Unterstützung für Textlabels, aber Sie können Folgendes tun:
- Verwenden Sie ein JS-Paket eines Drittanbieters. Beispiel ansehen
- Verwenden Sie das Drittanbieter-Python-Paket geemap.
- EE-Bilder mit dem EE-QGIS-Plug-in in QGIS einbinden
Kann ich Standardfarbpaletten verwenden?
Verwenden Sie das JS-Paket eines Drittanbieters ee-palettes.
Wie erstelle ich eine eigene Website, die die Earth Engine verwendet?
Verwenden Sie Earth Engine-Apps für einfache Anwendungen. In komplexeren Fällen können Sie EE-basierte App Engine-Anwendungen erstellen.
Wie funktionieren Karten-IDs?
Karten-IDs (in der API als mapid bezeichnet) sind Schlüssel, mit denen Clients Karten-Tiles abrufen können. Jede ID ist ein Hash, der durch Bereitstellung eines Bildausdrucks für den Endpunkt getMapId erstellt wird. Die resultierenden IDs sind Schlüssel, die sowohl auf den Bildausdruck als auch auf die Nutzeranmeldedaten verweisen, die in einer späteren Phase zum Generieren von Kacheln verwendet werden.
Wenn Sie Karten-Tiles anfordern, müssen Sie die Position des Tiles (x, y, zoom) sowie den mapid (den Schlüssel für das Bild und die Anmeldedaten) angeben. Dieselbe ID kann zum Laden vieler Kartenkacheln wiederverwendet werden. Es gibt keine Einschränkungen für die Wiederverwendung von mapid-Schlüsseln, aber sie laufen nach einigen Stunden ab. Wir veröffentlichen keine genauen Zeiträume, wie lange sie bestehen bleiben. Ihr Code sollte jedoch so geschrieben sein, dass er auch dann funktioniert, wenn die ID abläuft.
Beim Erstellen dieser IDs werden eine kleine Menge an Daten gespeichert und Anmeldedaten validiert. Daher ist es am besten, sie so lange wie möglich wiederzuverwenden. Es gibt kein API-Kontingent, das speziell mit dem getMapId-Endpunkt verknüpft ist. Wenn jedoch in einem Workflow mapid-Objekte mit einer Rate erstellt werden, die annähernd der Rate des Abrufens von Kacheln entspricht, liegt wahrscheinlich ein Fehler vor. Earth Engine hat keinen API-Endpunkt zum Entfernen, Auflisten oder Verwalten dieser IDs, da es sich um temporäre Ressourcen handelt.
Warum gibt ee.Algorithms.If() sowohl den Fall „true“ als auch den Fall „false“ aus?
function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());
Der Algorithmus If() funktioniert wie jeder andere Algorithmus in Earth Engine: Alle Argumente müssen ausgewertet werden, bevor der Algorithmus selbst ausgeführt werden kann.
Der Algorithmus erhält sowohl die trueCase- als auch die falseCase-Ergebnisse und wählt dann eines basierend auf dem condition-Argument aus und gibt es zurück. Beide Pfade mussten jedoch ausgeführt werden, damit diese Werte überhaupt an den Algorithmus übergeben werden konnten.
Ich erhalte die Fehlermeldung „Größe der Anfragenutzlast überschreitet das Limit“
Sie versuchen, eine sehr große Anfrage an die Earth Engine zu senden. Dies geschieht in der Regel, wenn der Code viele clientseitige „for“-Schleifen verwendet oder eine FeatureCollection aus vielen Geometrieobjekten erstellt. Im letzteren Fall sollten Sie solche Geometrien nicht in Ihrem Skript erstellen, sondern eine CSV-Datei mit ihnen generieren und in ein Tabellen-Asset hochladen.
Was ist der Unterschied zwischen ee.Image.clip() und ee.Filter.bounds()?
Weitere Informationen finden Sie in diesem GIS Stack Exchange-Thread.
Die Funktion ee.Image.clip() maskiert Pixel, die sich nicht mit einem bestimmten ee.Geometry oder ee.Feature überschneiden. Dadurch werden sie in Visualisierungen transparent und in Berechnungen ausgeschlossen. Sie können sich das so vorstellen, als würden Sie Pixel aus einem Bild herausschneiden.
Mit der Funktion ee.Filter.bounds() werden ee.Image-Objekte aus einem ee.ImageCollection herausgefiltert, basierend auf der Schnittmenge des Bildes mit einem ee.Geometry oder ee.Feature. Damit wird der Umfang einer Analyse auf die Bilder beschränkt, die sich mit einer bestimmten Region überschneiden. Das hilft, Ausdrücke zu optimieren.
Wie konvertiere ich Bild-Pixel in Feature-Sammlungen mit einem Feature pro Pixel?
Verwenden Sie die Funktion ee.Image.sample(). Anwendungsbeispiele finden Sie auf der API-Referenzseite der Funktion.
Was ist der Unterschied zwischen ee.ImageCollection.merge() und ee.ImageCollection.combine()?
Mit der Funktion ee.ImageCollection.merge() werden alle Bilder aus zwei Sammlungen in einer Sammlung zusammengeführt, unabhängig davon, ob die jeweiligen Bilder übereinstimmende Bänder, Metadaten, CRS oder Maßstäbe haben. Sie ist die Vereinigung von zwei Sammlungen. Mit der Methode combine() werden die Bänder übereinstimmender Bilder aus zwei Sammlungen zu einer einzigen Sammlung kombiniert. Übereinstimmende Bilder haben dieselbe ID (Attribut system:index). Es handelt sich um einen Inner Join von zwei Sammlungen basierend auf der Bild-ID, bei dem Bänder aus übereinstimmenden Bildern kombiniert werden. Bei übereinstimmenden Bildern werden die Bänder des sekundären Bildes an das primäre Bild angehängt (Überschreiben ist optional). Wenn keine übereinstimmenden Bilder vorhanden sind, wird eine leere Sammlung zurückgegeben.
Wie filtere ich Bildersammlungen nach mehreren Datumsintervallen?
Weitere Informationen finden Sie in diesem GIS Stack Exchange-Thread.
Sie können entweder mehrere Sammlungen mit merge() zusammenfassen oder ee.Filter.or() verwenden.
Wie erstelle ich einen Begrenzungsrahmen um einen bestimmten Punkt?
// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);
// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
var box = feature.buffer(30000).bounds();
return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);
Data Catalog
Können Sie Dataset X hinzufügen?
Melden Sie einen Fehler bei der Dataset-Anfrage gemäß der Anleitung für Dataset-Anfragen.
Sie können auch Daten in Ihren Earth Engine-Home-Ordner hochladen. Weitere Informationen finden Sie unter Rasterdaten importieren und Tabellendaten importieren.
Ein vorhandenes Dataset hat eine neue Version.
Melden Sie einen Dataset-Fehler gemäß dem Leitfaden für Dataset-Anfragen und geben Sie an, dass Sie eine Dataset-Aktualisierung anfordern.
Ein vorhandenes Dataset wird nicht aktualisiert oder es fehlen Assets.
Bevor Sie ein Problem melden, prüfen Sie nach Möglichkeit, ob die ausgewählten Assets tatsächlich auf der Website des Dataset-Anbieters vorhanden sind. Weitere Informationen finden Sie im Leitfaden zu fehlenden Bildern.
Wenn Sie nach einem Asset suchen, indem Sie einen ImageCollection filtern, achten Sie darauf, dass Ihre Filter nicht zu einschränkend sind.
Beachten Sie insbesondere Folgendes:
Sentinel-2 SR-Daten (Level-2-Daten) wurden von der ESA nicht für frühe Level-1-Szenen erstellt.
Landsat-Aufnahmen vor dem Jahr 2000 sind nicht weltweit verfügbar.
Ein vorhandenes Dataset enthält falsche Werte.
Im Entwicklerforum posten Fügen Sie ein Skript hinzu, das in die ursprüngliche Auflösung des Assets zoomt und deutlich zeigt, welche Werte falsch sind. Erläutern Sie, wo genau Sie den alternativen Wert beobachtet haben.
Wo kann ich sonst noch Fragen zu Datasets stellen?
Fragen zu NASA-Datasets finden Sie im NASA Earth Data-Forum.
Bei Fragen zu den Toolboxes, die mit Copernicus-Datasets arbeiten, finden Sie weitere Informationen in den Foren zu S1, S2 und S3.
Wie groß ist der EE-Katalog?
Seit Oktober 2023 enthält der Katalog über 1.000 Datasets. Die Dateigröße beträgt über 90 Petabyte (nach Berücksichtigung der verlustfreien Komprimierung).
Wie oft werden die Daten in EE aktualisiert?
Normalerweise werden alle laufenden Datasets mindestens täglich aktualisiert (obwohl nicht alle diese Datasets jeden Tag neue Daten enthalten). Einige Datasets werden mehrmals täglich aktualisiert. Es gibt jedoch keine Richtlinie, die dafür sorgt, dass die neuesten Assets im Katalog vorhanden sind.
Wie kann ich den Inhalt des EE-Katalogs programmatisch aufrufen?
Die Liste der Datasets wird im STAC-Format in einen Google Cloud Storage-Bucket gs://earthengine-stac exportiert.
Die Eintragsdatei ist catalog.json.
Kann ich Google Maps-Daten oder -Bilder für Analysen verwenden?
Google lizenziert oder verkauft keine Basiskartendaten für Analysen.
Wie finde ich das Datum, an dem ein Asset aufgenommen wurde?
Das Asset-Attribut 'system:version' ist der Zeitstempel der Aufnahme, formatiert als Mikrosekunden seit der Unix-Epoche. Hier ist ein Beispiel, in dem der Zeitstempel der Aufnahme eines Landsat-Bildes in ein menschenlesbares Format konvertiert wird.
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));
Enthält der Earth Engine-Katalog JSON-LD-Metadaten?
Ja, JSON-LD-Metadaten sind in die HTML-Seiten des Katalogs eingebettet. Die Sentinel-2-Seite enthält beispielsweise den folgenden Block:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Earth Engine Data Catalog",
"item": "https://developers.google.com/earth-engine/datasets"
},{
"@type": "ListItem",
"position": 2,
"name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
"item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
}]
}
</script>
Landsat
Wie wird der simpleComposite-Algorithmus implementiert?
Die serverseitige Implementierung entspricht diesem JavaScript-Code.
Wie kann ich wolkenfreie Komposite aus Landsat-Daten zur Oberflächenreflexion erstellen?
Landsat-Level-2-Daten (Oberflächenreflexion) enthalten mehrere Qualitätsbänder, mit denen Wolken und andere unerwünschte Bildartefakte ausgeblendet werden können. Ein Beispiel für die Verwendung dieser Bänder zur Verarbeitung von Landsat 8-SR-Bildern und zur Erstellung eines wolkenfreien Median-Komposits finden Sie in diesem GIS Stack Exchange-Beitrag. Dasselbe Verfahren wird verwendet, um ein wolkenfreies Komposit für die Verwendung in Beispielen für die überwachte Klassifizierung im Entwicklerhandbuch zu erstellen.
Ist eine Harmonisierung der Landsat-Oberflächenreflexion über verschiedene Sensoren hinweg erforderlich?
Roy et al., 2016 enthielt eine Analyse der Reflexionsunterschiede zwischen Landsat 7–8 TOA und der Oberflächenreflexion. Sie veröffentlichten die OLS- und RMA-Koeffizienten, damit die Leser die Reflexionswerte der Daten eines Sensors in die eines anderen umwandeln konnten. Der letzte Satz des Artikels lautet: „Obwohl die Sensorunterschiede recht gering sind, können sie je nach Landsat-Datenanwendung erhebliche Auswirkungen haben.“ Diese Analyse basierte jedoch auf Daten, die vor der Erfassung erhoben wurden.
Die Verbesserungen, die während der Wiederaufbereitung von Collection 1 und Collection 2 vorgenommen wurden, können die Beziehung zwischen den Sensoren beeinflussen. Soweit wir wissen, wurden jedoch keine Analysen ähnlich wie Roy et al. (2016) für Collection 1- oder Collection 2-Daten durchgeführt. Obwohl keine formelle Analyse vorliegt, scheinen sich einflussreiche Landsat-Nutzer einig zu sein, dass für Daten der Sammlung 2, Stufe 2 (Oberflächenreflexion) keine Korrektur erforderlich ist. In einer Antwort auf eine Frage zur Notwendigkeit der Harmonisierung von Collection 2, Level 2, merkte Mike Wulder vom Landsat Science Team beispielsweise an, dass die Oberflächenreflexionsprodukte von Collection 2 je nach Art der Anwendung (einschließlich Landbedeckungskartierung und Änderungserkennung) sehr gut geeignet und zuverlässig sind, ohne dass eine sensorübergreifende Anpassung erforderlich ist.
Wie kann ich Wolken und Wolkenschatten in MSS-Bildern maskieren?
Das msslib-Modul eines Drittanbieters für den JavaScript-Code-Editor enthält eine Implementierung des MSScvm-Algorithmus sowie weitere hilfreiche Funktionen zum Erkunden und Vorbereiten von MSS-Daten.
Datenverwaltung
Wem gehören die Daten, die ich hochlade?
Gemäß den Nutzungsbedingungen für Earth Engine sind Kunden die Eigentümer der Daten, die sie in Earth Engine hochladen.
Ich kann keine Daten hochladen.
Prüfen Sie den Status der Uploadaufgabe im Bereich „Aufgaben“ rechts oben im Code-Editor. Sie können auch die spezielle Aufgabenseite aufrufen.
Wenn keine Aufgabe vorhanden ist, haben Sie wahrscheinlich versucht, die Datei über den Code-Editor hochzuladen. Aufgrund eines Netzwerkproblems wurde der Upload jedoch nicht abgeschlossen, sodass die Aufgabe nicht erstellt wurde. Verwenden Sie einen anderen Browser oder einen anderen Computer.
Wenn eine Aufgabe fehlgeschlagen ist, prüfen Sie den angezeigten Fehler. Wenn keine spezifische Fehlermeldung angezeigt wird, prüfen Sie zuerst, ob die Datei beschädigt ist. Führen Sie dazu gdalinfo für Rasterdateien oder ogr2ogr für Vektordateien aus.
Mit diesen Befehlen wird versucht, alle Daten aus den Quelldateien zu lesen. Wenn die Dateien beschädigt sind, werden Fehler angezeigt.
Beispiel für einen gdalinfo-Aufruf:
gdalinfo -mm -stats -checksum file.tif
Beispiel für einen ogr2ogr-Aufruf, mit dem in.shp in out.csv konvertiert wird:
ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp
Wenn die Datei gültig ist, posten Sie die ID der fehlgeschlagenen Aufgabe als Text (nicht als Screenshot) in der Entwickler-Mailingliste.
Aufgaben-IDs haben das folgende Format: 4C25GIJBMB52PXTEJTF4JLGL. Machen Sie Ihre Quelldatei nach Möglichkeit öffentlich lesbar. Wenn es sich um eine private Datei handelt, geben Sie sie nur für earthengine@google.com frei, wenn Sie möchten, dass das Earth Engine-Team sie prüft. Wenn es nicht möglich ist, die Quelldatei freizugeben, geben Sie zumindest die Ausgabe von gdalinfo -mm -stats -checksum an.
Wenn Earth Engine eine bestimmte Projektion nicht unterstützt, müssen Sie die Daten vor dem Hochladen neu projizieren, z. B. mit gdalwarp.
Wie lade ich eine Datei im NetCDF- oder einem anderen nicht unterstützten Rasterformat hoch?
In Earth Engine können nur GeoTIFFs hochgeladen werden. Andere GDAL-kompatible Formate können mit gdal_translate in GeoTIFFs konvertiert werden. Beispiel:
gdal_translate -co COMPRESS=DEFLATE file.nc file.tif
Beachten Sie, dass einige NetCDF- oder HDF-Dateien aus mehreren Unter-Datasets bestehen, die mit gdalinfo gefunden werden können. Der Befehl gdal_translate sieht in diesem Fall so aus (beachten Sie den Pfad zwischen den doppelten Anführungszeichen):
gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif
NetCDF-Dateien enthalten manchmal keine Projektion, die von GDAL erkannt wird. In diesem Fall müssen Sie die Projektion und die räumliche Ausdehnung in der gdal_translate-Befehlszeile festlegen. Beispiel:
gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid
Welche Komprimierungsalgorithmen kann ich für hochgeladene GeoTIFFs verwenden?
Für den Upload können GeoTIFFs mit DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP oder ZSTD komprimiert werden. Für das Live-Lesen von COGs können Sie DEFLATE, JPEG, LZW, PACKBITS, ZSTD oder keine Komprimierung verwenden (siehe Best Practices für COGs). ZSTD ist insgesamt eine gute Wahl, da es schnell dekomprimiert werden kann und dennoch eine gute Komprimierung der meisten Images bietet.
Wenn Sie die ZSTD-Komprimierung mit gdal_translate verwenden möchten, fügen Sie diese Optionen hinzu. Wenn die Daten Gleitkommawerte enthalten, ändern Sie PREDICTOR in 3. (Informationen zu Dateien, die Sie als COGs registrieren möchten, anstatt sie hochzuladen, finden Sie im Leitfaden zur COG-Registrierung.)
gdal_translate in.tif out.tif \
-co BIGTIFF=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=ZSTD \
-co PREDICTOR=2 \
-co ZSTD_LEVEL=16 \
-co INTERLEAVE=BAND \
-co NUM_THREADS=ALL_CPUS
Die Aufnahme meiner Rasterdaten läuft schon seit Tagen und ist noch nicht abgeschlossen.
Prüfen Sie mit gdalinfo, ob für Ihre Datei die folgende GDAL-Option festgelegt ist: INTERLEAVE=PIXEL. Bei Dateien mit dieser Option und vielen Bändern wird die Aufnahme möglicherweise nie abgeschlossen, da das Layout solcher Dateien Lesevorgänge sehr langsam macht.
Konvertieren Sie solche Dateien vor dem Hochladen in das Band-Interleaved-Layout:
gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif
Meine hochgeladenen Raster stimmen nicht mit der Basiskarte überein.
Wenn die Daten leicht von der Basiskarte abweichen, hat die Projektion wahrscheinlich ein falsches Datum (Annahme über die Form der Erde).
Dies geschieht am häufigsten bei der Sinusprojektion, die nicht vollständig in GDAL-Metadaten codiert werden kann. Wenn Sie die Zielprojektion kennen (z.B. SR-ORG:6974 für Dateien mit MODIS-Sinusprojektion), legen Sie das Flag --crs beim Upload über die Befehlszeile oder das Feld crs des Upload-Manifests fest.
Wenn die Daten stark verzerrt oder an der völlig falschen Stelle angezeigt werden, ist wahrscheinlich die Projektion oder die affine Transformation falsch.
Mein Raster wird nur über der östlichen Hemisphäre angezeigt.
Sie haben wahrscheinlich ein globales Raster hochgeladen, das den Längengradbereich [0, 360] abdeckt. In Earth Engine müssen Raster jedoch im Bereich [-180, 180] liegen. Tauschen Sie die linke und rechte Hälfte des Rasters vor der Aufnahme. Sehen Sie sich diese Vorschläge von GIS Stack Exchange an.
Warum sieht mein aufgenommenes Klassifizierungsbild gesprenkelt aus?
Sie haben wahrscheinlich die standardmäßige Pyramidenrichtlinie MEAN verwendet.
Für Klassifizierungsbilder sollte die Pyramidenrichtlinie MODE verwendet werden. Für QA-/Bitmaskenbilder sollte die Pyramidenrichtlinie SAMPLE verwendet werden.
Ich erhalte die folgende Fehlermeldung: „No data value -128.0 cannot be applied to band #0 of type Short<0, 255>.“
GDAL kann Single-Byte-Bänder nicht als Bänder mit vorzeichenbehafteten Ganzzahlen behandeln und liest solche Bänder daher als vorzeichenlose Ganzzahlen. Dies würde zu Konflikten mit negativen Werten für „Keine Daten“ führen.
Wenn Ihre Werte tatsächlich vorzeichenbehaftete Ganzzahlen sind, verwenden Sie den Manifest-Upload und fügen Sie Folgendes dem Tileset-Abschnitt hinzu, der Ihre Datei enthält: data_type: "INT8"
Wenn Ihre Werte vorzeichenlose Ganzzahlen sind, hat Ihre Datei einen ungültigen NoData-Wert. Sie können ihn beim Hochladen mit dem richtigen Datenwert (oder einem Wert, der nie vorkommt, falls vorhanden) überschreiben. Sie können auch gdal_translate -a_nodata verwenden, um den nodata-Wert zu ändern, oder gdal_edit.py -unsetnodata, um ihn zu entfernen.
Wie lade ich eine Datei im GeoJSON- oder einem anderen nicht unterstützten Vektorformat hoch?
Mit ogr2ogr können Sie OGR-kompatible Formate in CSV oder SHP übersetzen. Beispiel:
or2ogr -f "ESRI Shapefile" file.shp file.kml
Bei CSV-Uploads kann die Geometriespalte GeoJSON enthalten.
Ich möchte Daten mit Python hochladen oder viele Dateien gleichzeitig hochladen.
Verwenden Sie den Befehlszeilen-Upload. Für solche Uploads müssen die Quelldateien zuerst in einen GCS-Bucket (Google Cloud Storage) hochgeladen werden. Die GCS-Nutzung ist kostenlos, solange Sie die Limits der kostenlosen Stufe nicht überschreiten. Weitere Informationen finden Sie auf der Preisseite.
Ich möchte ein großes Rastermosaik hochladen, das in viele Kacheln aufgeteilt ist.
Wenn die Dateien alle dieselbe Projektion und Pixelgröße haben, laden Sie sie einfach zusammen in dasselbe Asset hoch. Sie werden dann automatisch mosaikiert.
Wenn die Dateien unterschiedliche Projektionen oder Pixelgrößen haben, können sie nicht zu einem einzigen Raster-Asset zusammengefügt werden. Laden Sie stattdessen jede Kachel als separates Asset in denselben ImageCollection hoch, der mit ImageCollection.mosaic() mosaikiert werden kann.
Ich versuche, ein Mosaik hochzuladen, und erhalte Fehlermeldungen zu nicht übereinstimmenden Kacheln.
Kacheln für Earth Engine-Rastermosaike müssen dieselbe Projektion und Pixelgröße haben. Außerdem müssen die Kacheln genau an den Pixelgrenzen ausgerichtet sein.
Ich versuche, eine Datei aus einem GCS-Bucket hochzuladen, aber Earth Engine kann sie nicht finden.
Möglicherweise haben Sie für den GCS-Upload und für die Verbindung mit Earth Engine unterschiedliche Google-Konten verwendet. Die GCS-Datei muss für das Konto lesbar sein, mit dem Sie eine Verbindung zur Earth Engine herstellen. Wenn die Mehrfachanmeldung im Browser zu Verwirrung führt, stellen Sie in einem Inkognitofenster eine Verbindung zu Earth Engine her.
Ich möchte viele Assets gleichzeitig exportieren.
Sie müssen jedes Bild einzeln exportieren.
Ich möchte einen Folder oder eine ImageCollection mit einem einzigen Befehl verschieben oder löschen.
Mit earthengine rm -r werden ein Ordner oder eine Sammlung und alle darin enthaltenen Elemente gelöscht, allerdings nur ein Asset nach dem anderen. Bei einer großen Sammlung kann das Stunden dauern. Wenn Sie den Vorgang beschleunigen möchten, löschen Sie die untergeordneten Elemente parallel über ein Skript und löschen Sie dann das übergeordnete Element (siehe Mit großen Sammlungen arbeiten). Derselbe Ansatz funktioniert für jede flache Sammlung oder jeden Ordner. Ein Ordner, der andere Ordner oder Sammlungen enthält, muss von unten nach oben geleert werden, da ein Container erst gelöscht werden kann, wenn er leer ist. Verwenden Sie mv auf dieselbe Weise, um die Datei zu verschieben.
Ich möchte direkt von außerhalb der EE auf Earth Engine-Daten zugreifen.
QGIS hat ein Earth Engine-Plug-in.
GDAL hat einen Earth Engine-Treiber.
Andere Systeme können die REST API von EE verwenden.
Ich möchte einen Teil meines Earth Engine-Assets aktualisieren, ohne es vollständig neu aufzunehmen.
In EE hochgeladene Raster- oder Vektordaten können nicht aktualisiert werden. Nur Asset-Metadaten-Properties können aktualisiert werden. Eine Ausnahme sind COG-gestützte Assets, die Sie auf eine aktualisierte Cloud Storage-Datei verweisen können, indem Sie sie mit aktivierter Überschreibungsoption neu registrieren.
Ich verliere den Zugriff auf mein Konto. Was mache ich mit meinen Assets?
Wenn die Richtlinien des ursprünglichen Kontos die Datenübertragung zulassen, geben Sie Ihre Assets für ein anderes Konto frei und kopieren Sie die Assets, damit sie dem neuen Konto gehören. Verwenden Sie das Befehlszeilen-Dienstprogramm zum Kopieren, wenn viele Assets verschoben werden müssen.
Wenn ein Konto gelöscht wird, kann auf die Assets, die diesem Konto gehören, nicht mehr zugegriffen werden.
Mein exportiertes Bild befindet sich am falschen Ort.
Bei einigen Projektionen, z. B. sinusförmigen oder konischen, können in GeoTIFF-Dateien manchmal nicht alle erforderlichen Projektionsparameter gespeichert werden. Dies führt zu einer exportierten Datei, die an der falschen Stelle angezeigt wird, wenn sie in Desktop-GIS-Tools angesehen oder wieder in EE aufgenommen wird.
Geben Sie dazu einen Exportparameter crs an, der bekanntermaßen gut mit GeoTIFF-Dateien funktioniert. Verwenden Sie beispielsweise den EPSG-Code für die UTM-Zone, die Ihren Interessenbereich enthält.
Bei exportierten Feature-Sammlungs-Assets werden die von mir festgelegten Attribute nicht beibehalten.
Keine Export.table.*-Funktionen behalten Attribute auf Tabellenebene in der Ausgabe bei.
Viele Ausgabeformate (z.B. CSV, GeoJSON) unterstützen solche Metadaten nicht. Die Funktion Export.table.toAsset könnte Attribute auf Tabellenebene unterstützen, tut dies aber derzeit nicht.
Tabellen, die im CSV-Format nach Drive exportiert werden, werden in das XLSX-Format konvertiert.
Je nach Ihren Google Drive-Einstellungen können CSV-Tabellen, die Sie aus Earth Engine exportieren, in XLSX-Dateien konvertiert werden. Dies kann unbeabsichtigte Auswirkungen haben, z. B. Datentypkonvertierungen. So ändern Sie das Verhalten für nachfolgende Exporte:
- Klicken Sie in Google Drive im Web rechts oben auf das Zahnradsymbol für die Einstellungen.
- Klicke auf „Einstellungen“.
- Scrollen Sie zu „Hochgeladene Dateien in das Google Docs-Editoren-Format umwandeln“ und deaktivieren Sie die Option.
Cloud-optimierte GeoTIFFs (COGs)
Hintergrundinformationen finden Sie in der COG-Übersicht und im Leitfaden zur COG-Registrierung.
Ich habe ein COG-basiertes Asset freigegeben, aber meine Mitbearbeiter erhalten einen Berechtigungsfehler.
Ein COG-basiertes Asset ist ein Verweis auf Dateien in Ihrem Cloud Storage-Bucket. Daher benötigen Mitbearbeiter Lesezugriff auf sowohl das Earth Engine-Asset als auch den Bucket. Weisen Sie ihnen für den Bucket die Rollen Storage Object Viewer und Storage Bucket Viewer zu. Ein Berechtigungsfehler bei einem Asset, das sie sonst sehen können, bedeutet in der Regel, dass eine der beiden Rollen fehlt. Weitere Informationen finden Sie unter Berechtigungen konfigurieren.
Welchen Cloud Storage-Bucket-Speicherort sollte ich zum Speichern von COG-Assets verwenden?
Es werden nur wenige US-Standorte unterstützt. Earth Engine lehnt Registrierungs- und Leseanfragen für Buckets an anderen Standorten ab. Siehe unterstützte Bucket-Standorte.
Ich habe eine COG-Datei in Cloud Storage ersetzt. Warum wird das Asset nicht geladen oder warum werden immer noch die alten Daten angezeigt?
Wenn Sie ein COG registrieren, pinnt Earth Engine die Objektgenerierung (Version) der Datei an. Das Überschreiben der Datei aktualisiert das Asset also nicht. Registrieren Sie das Asset noch einmal mit demselben Namen und aktivierter Überschreibungsoption. Sie müssen es nicht zuerst löschen. Weitere Informationen finden Sie unter COG-gestützte Assets aktualisieren, ersetzen und löschen.
Wie kann ich feststellen, auf welche Version einer Datei mein COG-gestütztes Asset verweist?
In den Metadaten des Assets (ee.data.getAsset()) wird die angepinnte Generierung als Suffix im URI der Datei angezeigt. Weitere Informationen finden Sie unter Objektgenerierungen.
Was passiert, wenn ich eine COG-Datei in Cloud Storage, aber nicht das Earth Engine-Asset lösche, oder umgekehrt?
Sie sind unabhängig. Wenn Sie das Earth Engine-Asset löschen, bleiben Ihre Dateien in Cloud Storage unberührt. Wenn Sie die Datei löschen, bleibt das Asset erhalten, aber die Pixel sind normalerweise nicht lesbar. Weitere Informationen finden Sie unter Unabhängige Lebenszyklen.
Wie kann ich ein großes COG-basiertes ImageCollection am schnellsten löschen oder ersetzen?
In der Earth Engine API gibt es keine Batch- oder rekursive Löschung. Mit earthengine rm -r wird jeweils ein Asset gelöscht. Wenn Sie Bilder ersetzen, registrieren Sie sie noch einmal mit aktivierter Überschreibungsoption, anstatt sie zu löschen. Wenn Sie sie löschen, parallelisieren Sie den Vorgang über ein Script. Informationen zum Ansatz und ein Skript finden Sie unter Mit großen Sammlungen arbeiten.
Warum wird meine COG-Registrierung nicht auf dem Tab „Aufgaben“ angezeigt?
Die Registrierung eines COG ist ein synchroner API-Aufruf, bei dem nur die Metadaten der Datei indexiert werden, kein Batch-Aufnahmejob. Es wird also keine Aufgabe erstellt. Das Asset ist auf dem Tab Assets verfügbar, sobald der Aufruf zurückgegeben wird. Weitere Informationen finden Sie unter Registrierungsanfrage einreichen.
Kann ich mehrere COG-Dateien zu einem Earth Engine-Asset kombinieren?
Nur wenn jede Datei unterschiedliche Bänder derselben Szene enthält: Listen Sie jede Datei als eigenes Tileset im Manifest auf und ordnen Sie Bänder Tilesets zu. Sie können räumlich benachbarte Dateien nicht zu einem COG-basierten Asset zusammenfügen. Registrieren Sie jede Datei als eigenes Bild in einer ee.ImageCollection und rufen Sie mosaic() auf. Siehe Manifesteinschränkungen.
Welche Komprimierungsschemas, Kachelgrößen und Pixeltypen können für COG-gestützte Assets verwendet werden?
Informationen zu den unterstützten Komprimierungsschemas, Kachelgrößen und Pixeldatentypen finden Sie unter Best Practices für die Vorbereitung externer COGs. Dateien in Komprimierungsformaten, die Earth Engine nicht direkt als COGs lesen kann, können weiterhin als Standard-Assets hochgeladen werden.
Ich erhalte die Fehlermeldung „Die Metadaten des TIFF konnten in den ersten 10.000.000 Byte nicht gelesen werden.“
Earth Engine liest beim Laden oder Registrieren nur den Anfang einer Datei. Große Bilder mit vielen Kacheln und abgeschnittene Dateien überschreiten diesen Wert. Informationen zum Limit und dazu, wie Sie es einhalten, finden Sie unter Dateidimensionen auswählen.
Wie unterscheidet sich ee.Image.loadGeoTIFF() von einem registrierten Asset, wenn sich die Datei ändert?
ee.Image.loadGeoTIFF() liest bei jeder Berechnung oder Anfrage für Kartenkacheln die aktuelle Version der Datei. Ersetzungen werden also übernommen (auf einer Karte ungleichmäßig, da gerenderte Kartenkacheln im Cache gespeichert bleiben). Ein registriertes Asset ist immer an die Generation gebunden, mit der es registriert wurde. Es muss neu registriert werden, um eine neue Datei zu sehen. Dafür werden jedoch der Footprint und die Metadaten indexiert, sodass es in großen Sammlungen verwendet werden kann. Weitere Informationen finden Sie unter COGs aus Cloud Storage lesen.
Code-Editor
Ich kann mich nicht im Code-Editor anmelden, weil ich aufgefordert werde, das falsche Konto zu verwenden.
Melden Sie sich ab, wählen Sie auf der Seite „Konto auswählen“ das Konto aus, das für die Verwendung von Earth Engine registriert ist, und wählen Sie dann auf der zweiten Seite „Konto auswählen, um mit dem Earth Engine-Code-Editor fortzufahren“ (der genaue Wortlaut kann abweichen) dasselbe Konto noch einmal aus.
Ich möchte einen Screenshot einer Weltkarte machen, aber die Web-Mercator-Projektion gefällt mir nicht.
Die im Code-Editor verwendete Kartenprojektion ist Web Mercator (EPSG:3857). Objekte, die weiter vom Äquator entfernt sind, werden vergrößert dargestellt. Dadurch erscheinen Regionen in hohen Breitengraden im Vergleich zu Regionen in der Nähe des Äquators viel größer, als sie tatsächlich sind. Sie können die Projektion des Karten-Canvas im Code-Editor nicht ändern. Sie können jedoch mit der Methode ee.Image.changeProj ein Bild in der Projektion Ihrer Wahl auf den Web Mercator-Canvas „zeichnen“.
Ein Beispiel für die Anzeige eines globalen DEM auf der Code-Editor-Karte in der Robinson-Projektion finden Sie auf der API-Referenzseite der Methode.
Diese Methode sollte nur für Visualisierungszwecke verwendet werden, da das Prüftool und die Zeichentools des Code-Editors weiterhin in Web Mercator arbeiten.
Mein Script wird nicht gespeichert (Script error: Unknown commit).
Wenn Sie beim Speichern eines Skripts die Meldung Script error: Unknown commit erhalten, ist das Repository, in dem Sie speichern, wahrscheinlich nicht synchronisiert.
Die Ursache für diesen Zustand ist variabel und schwer zu identifizieren. Aktualisieren Sie die Skriptliste über die Schaltfläche rechts oben auf dem Tab „Skript“, um das Problem zu beheben. Wenn das nicht funktioniert, erstellen Sie auf dem Tab „Script“ (Skript) über die Schaltfläche „New“ (Neu) ein neues Repository und speichern Sie Ihr Skript dort. Möglicherweise müssen Sie Skripts aus dem nicht synchronisierten Repository in das neue Repository verschieben.
Warum werden im Code-Editor wiederholt 400-Fehler angezeigt?
Wenn im Code-Editor wiederholt 400-Fehler auftreten, rufen Sie https://myaccount.google.com/connections auf, suchen Sie in der Liste der Apps und Dienste nach „Earth Engine Code Editor“, wählen Sie die Option aus und klicken Sie dann auf „Alle Verbindungen mit Earth Engine Code Editor löschen“ und bestätigen Sie. Öffnen Sie dann den Code-Editor und authentifizieren Sie sich noch einmal.
Wie kann ich gelöschte Skripts und Ordner wiederherstellen?
Wenn Sie versehentlich ein Script oder einen Ordner in einem vorhandenen Repository löschen, bleibt der vollständige Commit-Verlauf in den Git-Logs auf unseren Servern erhalten. Sie können gelöschte Skripts oder Ordner wiederherstellen, indem Sie das Repository mit standardmäßigen Git-Befehlszeilentools lokal klonen.
Wenn Sie jedoch ein ganzes Repository (users/username/repository) löschen, werden das Repository und der Commit-Verlauf dauerhaft aus earthengine.googlesource.com entfernt. Dies kann nicht rückgängig gemacht oder wiederhergestellt werden.
Eine detaillierte Anleitung zum Generieren von Git-Anmeldedaten, zum Klonen Ihres Repositorys und zum Wiederherstellen gelöschter Dateien oder Ordner finden Sie im Leitfaden Skriptwiederherstellung und Repository-Migration.
Wie kann ich das Stammverzeichnis meines Script-Repositorys umbenennen?
Ihr Skript-Stammverzeichnis (users/username) ist an Ihre ursprüngliche Earth Engine-Kontoregistrierung gebunden. Sie kann nicht direkt im Backend umbenannt werden, da dies alle externen Skripts oder Projekte von Mitbearbeitern beeinträchtigen würde, die Ihren modularen Code über den Pfad require('users/username/repository:...') importieren.
Wenn Sie einen neuen Namespace benötigen, können Sie Ihre Arbeit in ein neues Konto migrieren:
- Registrieren Sie ein neues Earth Engine-Konto mit Ihrer neuen Google-Identität, wodurch ein neues
users/new_username-Stammverzeichnis generiert wird. - Folgen Sie der Anleitung zur Repository-Migration, um Ihr altes Repository zu klonen und den gesamten Verlauf in das neue leere Repository zu übertragen.
Wichtige Hinweise:
- Öffentliche Module: Wenn Sie öffentliche Module haben, auf die andere angewiesen sind, empfehlen wir dringend, Ihr altes Konto und Repository aktiv zu halten, damit deren Workflows nicht unterbrochen werden.
- Private Skripts: Wenn Ihre Skripts vollständig privat sind, können Sie Ihre
require()-Importanweisungen so aktualisieren, dass sie auf den neuen Repository-Pfad verweisen, und dann die alten Repositories sicher löschen.