Earth Engine Studio-Leitfaden

Karten & Geometrien

Layer darstellen, Werte prüfen, Geometrien zeichnen und zusätzliche Karten erzeugen.

Karten und Layer

Map verwaltet Reihenfolge, Sichtbarkeit und Deckkraft von Layern. Renderer unterstützen Raster, Vektoren und verschiedene Basiskarten. Map.addLayer(...) fügt Ergebnisse hinzu; Map.centerObject(...) richtet die Ansicht aus.

MapLibre kann computePixels-Layer im Browser rendern. Mit WebGL2 akzeptiert shader einen einzelnen GLSL-Ausdruck, der vec4(...) zurückgibt und auf values, normalized, uv, mercator sowie alpha zugreift. Deklarationen, Präprozessoranweisungen und direkter gl_*-Zugriff werden abgewiesen; die üblichen Earth-Engine- und computePixels-Grenzen gelten weiterhin.

In der Globusansicht werden Vektorfeldpfeile und Partikel am Horizont ausgeblendet. arrowDistribution: "uniform" beziehungsweise "equal-area" nutzt flächengleiche Fibonacci-Anker statt des Mercator-Rasters. Ihre Dichte passt sich dem Zoom an und wechselt im Nahbereich zu Bildschirmabständen; arrowSpacing bleibt die Dichtesteuerung. In den Layer-Einstellungen heißt diese Option Uniform globe.

Clientseitige Punktsymbole rendern

Mit renderer: "symbols" aktiviert ein Skript den MapLibre-WebGL-Renderer für Point- und MultiPoint-Sammlungen. Als Quelle dienen eine angemeldete ee.FeatureCollection oder eine lokale GeoJSON-FeatureCollection; lokale Daten benötigen keine Earth-Engine-Anmeldung.

Map.addLayer(peaks, {
  renderer: "symbols",
  symbol: {type: "mountain", size: 18, sizeProperty: "size", color: "#5b4636"},
  label: {
    property: "label", position: "above",
    positionProperty: "label_position",
    fontFamily: "serif", fontSize: 14, scale: "zoom",
    color: "#2c2118",
    effect: {type: "outline", color: "#f5ead3", width: 2}
  },
  minZoom: 4, maxZoom: 18,
  featureMinZoomProperty: "min_zoom",
  featureMaxZoomProperty: "max_zoom"
}, "Historische Gipfel");

Symbole sind circle, mountain oder none; Labels liegen above, below, left, right oder center. \n erzeugt mehrere Zeilen. Symbolgrößen werden auf 1–128 und Schriftgrößen auf 8–64 Bildschirmpixel begrenzt. "zoom" interpoliert 0,75×/1×/1,5× bei Zoom 0/12/24; "fixed" bleibt konstant. Ungültige Feature-Eigenschaften fallen auf den Layer-Standard zurück, fehlende Min-/Max-Zoom-Eigenschaften lassen das Feature sichtbar.

Text bleibt aufrecht und Bergbasen bleiben bei Drehung und Neigung horizontal. Kollisionen werden standardmäßig vermieden; das vorderste Symbol gewinnt. allowOverlap: true zeichnet alle. halo, outline und shadow werden unterstützt. Für die v1-Aliase sans, serif und monospace erzeugt MapLibre Glyphen aus der installierten generischen CSS-Schrift. Form, Metrik und Zeichenabdeckung hängen daher vom Client ab.

Earth-Engine-Quellen laden sichtbare XYZ-Kacheln plus einen Rand, je 1.000 Features pro Seite, höchstens 5.000 pro Abfragekachel und vier Anfragen gleichzeitig. Ein 128-Kachel-LRU, Abbruch veralteter Arbeit und Deduplizierung verhindern Nähte. Dichte Sammlungen sollten vorab gefiltert werden. Andere Geometrien werden mit einer Warnung übersprungen. Diese Darstellung ist in v1 nur mit MapLibre verfügbar; OpenLayers und Google Maps zeigen eine Provider-Warnung.

Earth Engine UI Apps

Earth-Engine-ui-Skripte laufen direkt in Studio. Ein nicht angehängtes Widget aus print(...) erscheint in Console. Änderungen an ui.root oder ein an ui.Map angehängtes Widget öffnen einen eigenen App-Tab neben der Hauptkarte, ohne diese zu ersetzen.

App-Karten bleiben eingebettet, sofern das Skript nicht map.open() aufruft. ui.SplitPanel unterstützt horizontale, vertikale und Wipe-Layouts sowie einen diagonalen Studio-Winkel über angle oder splitPanel.setAngle(...). ui.Map.Linker(...) synchronisiert verknüpfte Karten. Mit ui.App.setHeader(...) und ui.App.setCss(...) lassen sich Kopfzeile und isolierte Styles festlegen. App-Tabs gelten nur für die Sitzung und werden beim erneuten Ausführen des Skripts neu erstellt.

Kategorische Legenden hinzufügen

ui.Legend ist eine Studio-Erweiterung für klassifizierte Bilder. Übergib gleich lange Arrays für values, names und palette. Das optionale Array descriptions zeigt einen Tooltip über Klassenfarbe und -name:

Map.add(ui.Legend({
  title: "Landbedeckung",
  values: [1, 2],
  names: ["Wald", "Wasser"],
  palette: ["00A600", "00CCF2"],
  descriptions: ["Baumbedecktes Land", "Dauerhaftes Binnengewässer"]
}));

Die Legende kann Klassen auch aus einem ee.Image oder einer homogenen ee.ImageCollection ermitteln. description gibt das Präfix an; bei einer Collection wird first() verwendet und für alle Bilder dieselbe Klassifikation angenommen:

var corine = ee.ImageCollection("COPERNICUS/CORINE/V20/100m");
Map.add(ui.Legend({
  collection: corine,
  description: "landcover",
  title: "CORINE-Landbedeckung",
  style: {position: "bottom-left", width: "390px"}
}));

Für landcover sucht Studio zuerst nach landcover_class_values, landcover_class_names und landcover_class_palette, danach nach landcover_values, landcover_names und landcover_palette. Während der Metadatenabfrage erscheint ein Ladestatus; fehlende oder unterschiedlich lange Arrays werden als sichtbarer Fehler gemeldet.

Prüfen und zeichnen

Der Inspektor fragt Pixel- und Objektwerte an der gewählten Position ab. Zeichenwerkzeuge erstellen Punkte, Linien und Polygone, die als Variablen oder GeoJSON weiterverwendet werden können. GeoJSON und zeilenweises GeoJSONL lassen sich aus statischen Dateipfaden laden.

Skripte können zusätzliche Karten-Tabs mit MapLibre, OpenLayers oder Google Maps erzeugen. Diese Tabs gehören zum Lauf und müssen nach einem Reload erneut erstellt werden.