Earth Engine supporta una vasta gamma di operazioni sugli oggetti Geometry
.
Sono incluse operazioni su singole geometrie, come il calcolo di un buffer, del baricentro, della scatola delimitante, del perimetro, dell'involucro convesso e così via. Ad esempio:
Editor di codice (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');
Nell'esempio precedente, la distanza del buffer è specificata in metri.
Le operazioni geometriche supportate includono anche i calcoli relazionali tra le geometrie, come intersezione, unione, differenza, distanza, contiene e così via. Per testare alcune di queste relazioni, le geometrie utilizzano per impostazione predefinita la regola "pari-dispari". In base alla regola pari-dispari, un punto si trova all'interno del poligono se una linea che parte da quel punto e arriva a un punto noto per essere al di fuori del poligono attraversa un numero dispari di altri lati. L'interno di un poligono è tutto ciò che si trova all'interno della shell e non all'interno di un foro. Come semplice esempio, un punto all'interno di un poligono circolare deve attraversare esattamente un lato per uscire dal poligono. Se necessario, le geometrie possono facoltativamente utilizzare la regola "a sinistra all'interno". Immagina di percorrere i punti di un anello nell'ordine fornito. L'interno sarà a sinistra.
Per dimostrare la differenza tra le geometrie create con la regola "a sinistra all'interno"
(evenOdd: false
) e quelle create con la regola "pari-dispari",
l'esempio seguente confronta un punto con due poligoni diversi:
Editor di codice (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
L'esempio precedente mostra in che modo l'ordine delle coordinate fornito al
costruttore Polygon
influisce sul risultato quando viene costruito un poligono con lato sinistro interno. Nello specifico, il punto si trova all'esterno del poligono sinistro interno, ma all'interno del
poligono pari-dispari.
L'esempio seguente calcola e visualizza le geometrie derivate in base alla relazione tra due poligoni:
Editor di codice (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 questi esempi, tieni presente che il parametro maxError
è impostato su un metro per
le operazioni geometriche. maxError
è l'errore massimo consentito, in metri, delle trasformazioni (come la proiezione o la riproiezione) che possono alterare la geometria. Se una delle geometrie è in una proiezione diversa dall'altra, Earth Engine eseguirà il calcolo in un sistema di coordinate sferiche, con una precisione di proiezione data da maxError
. Se necessario, puoi anche specificare una proiezione specifica in cui eseguire il calcolo.