Earth Engine unterstützt eine Vielzahl von Vorgängen für Geometry
-Objekte.
Dazu gehören Vorgänge auf einzelnen Geometrien wie die Berechnung eines Puffers, des Schwerpunkts, des Begrenzungsrahmens, des Perimeters oder der konvexen Hülle. Beispiele:
Code-Editor (JavaScript)
// Create a geodesic polygon. var polygon = ee.Geometry.Polygon([ [[-5, 40], [65, 40], [65, 60], [-5, 60], [-5, 60]] ]); // Compute a buffer of the polygon. var buffer = polygon.buffer(1000000); // Compute the centroid of the polygon. var centroid = polygon.centroid(); Map.addLayer(buffer, {}, 'buffer'); Map.addLayer(centroid, {}, 'centroid');
Im vorherigen Beispiel ist der Pufferabstand in Metern angegeben.
Zu den unterstützten geometrischen Vorgängen gehören auch relationale Berechnungen zwischen Geometrien wie Schnittmenge, Vereinigung, Differenz, Entfernung und „enthält“. Zum Testen einiger dieser Beziehungen wird für Geometrien standardmäßig die „Ganzzahl-/Ungeradezahl-Regel“ verwendet. Gemäß der geraden-ungerade-Regel befindet sich ein Punkt innerhalb des Polygons, wenn eine Linie von diesem Punkt zu einem Punkt, der sich bekanntermaßen außerhalb des Polygons befindet, eine ungerade Anzahl anderer Kanten schneidet. Der Innenbereich eines Polygons ist alles innerhalb der Umgrenzung, aber nicht innerhalb eines Lochs. Ein einfaches Beispiel: Ein Punkt innerhalb eines kreisförmigen Polygons muss genau eine Kante kreuzen, um das Polygon zu verlassen. Für Geometrien kann bei Bedarf die Regel „links-innen“ verwendet werden. Stellen Sie sich vor, Sie gehen die Punkte eines Rings in der angegebenen Reihenfolge ab. Das Innere des Rings ist dann links.
Um den Unterschied zwischen Geometrien zu veranschaulichen, die mit der Regel „links-drinnen“ (evenOdd: false
) und mit der Regel „gerade-ungerade“ erstellt wurden, wird im folgenden Beispiel ein Punkt mit zwei verschiedenen Polygonen verglichen:
Code-Editor (JavaScript)
// Create a left-inside polygon. var holePoly = ee.Geometry.Polygon({ coords: [ [[-35, -10], [-35, 10], [35, 10], [35, -10], [-35, -10]] ], evenOdd: false }); // Create an even-odd version of the polygon. var evenOddPoly = ee.Geometry({ geoJson: holePoly, evenOdd: true }); // Create a point to test the insideness of the polygon. var pt = ee.Geometry.Point([1.5, 1.5]); // Check insideness with a contains operator. print(holePoly.contains(pt)); // false print(evenOddPoly.contains(pt)); // true
Im vorherigen Beispiel wird gezeigt, wie sich die Reihenfolge der Koordinaten, die dem Konstruktor von Polygon
übergeben werden, auf das Ergebnis auswirkt, wenn ein Polygon mit linksliegender Innenseite erstellt wird. Der Punkt befindet sich also außerhalb des Polygons mit dem linken Innenbereich, aber innerhalb des Polygons mit dem geraden/ungeraden Umriss.
Im folgenden Beispiel werden abgeleitete Geometrien basierend auf der Beziehung zwischen zwei Polygonen berechnet und visualisiert:
Code-Editor (JavaScript)
// Create two circular geometries. var poly1 = ee.Geometry.Point([-50, 30]).buffer(1e6); var poly2 = ee.Geometry.Point([-40, 30]).buffer(1e6); // Display polygon 1 in red and polygon 2 in blue. Map.setCenter(-45, 30); Map.addLayer(poly1, {color: 'FF0000'}, 'poly1'); Map.addLayer(poly2, {color: '0000FF'}, 'poly2'); // Compute the intersection, display it in green. var intersection = poly1.intersection(poly2, ee.ErrorMargin(1)); Map.addLayer(intersection, {color: '00FF00'}, 'intersection'); // Compute the union, display it in magenta. var union = poly1.union(poly2, ee.ErrorMargin(1)); Map.addLayer(union, {color: 'FF00FF'}, 'union'); // Compute the difference, display in yellow. var diff1 = poly1.difference(poly2, ee.ErrorMargin(1)); Map.addLayer(diff1, {color: 'FFFF00'}, 'diff1'); // Compute symmetric difference, display in black. var symDiff = poly1.symmetricDifference(poly2, ee.ErrorMargin(1)); Map.addLayer(symDiff, {color: '000000'}, 'symmetric difference');
In diesen Beispielen ist der Parameter maxError
für die Geometrievorgänge auf einen Meter festgelegt. maxError
ist der maximal zulässige Fehler in Metern, der durch Transformationen (z. B. Projektion oder Neuprojektion) entsteht, die die Geometrie verändern können. Wenn sich eine der Geometrien in einer anderen Projektion als die andere befindet, führt Earth Engine die Berechnung in einem sphärischen Koordinatensystem mit einer Projektionsgenauigkeit durch, die durch maxError
angegeben wird. Sie können bei Bedarf auch eine bestimmte Projektion angeben, in der die Berechnung durchgeführt werden soll.