Earth Engine accepte de nombreuses opérations sur les objets Geometry
.
Il s'agit d'opérations sur des géométries individuelles, telles que le calcul d'une zone tampon, d'un centre de gravité, d'une zone englobante, d'un périmètre, d'un enveloppe convexe, etc. Par exemple:
Éditeur de code (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');
Dans l'exemple précédent, vous pouvez voir que la distance de la zone tampon est spécifiée en mètres.
Les opérations géométriques compatibles incluent également les calculs relationnels entre les géométries, tels que l'intersection, l'union, la différence, la distance, la présence, etc. Pour tester certaines de ces relations, les géométries utilisent la règle "pair-impair" par défaut. D'après la règle des nombres pairs et impairs, un point se trouve à l'intérieur du polygone si une ligne reliant ce point à un point connu pour être en dehors du polygone croise un nombre impair d'autres arêtes. L'intérieur d'un polygone correspond à tout ce qui se trouve à l'intérieur de la coque et non dans un trou. Par exemple, un point situé dans un polygone circulaire doit traverser exactement un seul bord pour s'échapper du polygone. Les géométries peuvent éventuellement utiliser la règle "à gauche à l'intérieur", si nécessaire. Imaginez que vous parcourez les points d'un anneau dans l'ordre indiqué. L'intérieur se trouvera à gauche.
Pour illustrer la différence entre les géométries créées avec la règle "à gauche à l'intérieur" (evenOdd: false
) et celles créées avec la règle "pair-impair", l'exemple suivant compare un point à deux polygones différents:
Éditeur de code (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'exemple précédent montre comment l'ordre des coordonnées fournies au constructeur Polygon
affecte le résultat lorsqu'un polygone à gauche est construit. Plus précisément, le point se trouve en dehors du polygone intérieur gauche, mais à l'intérieur du polygone pair-impair.
L'exemple suivant calcule et visualise les géométries dérivées en fonction de la relation entre deux polygones:
Éditeur de code (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');
Dans ces exemples, notez que le paramètre maxError
est défini sur un mètre pour les opérations de géométrie. maxError
correspond à l'erreur maximale autorisée, en mètres, des transformations (telles que la projection ou la reprojection) pouvant modifier la géométrie. Si l'une des géométries est dans une projection différente de l'autre, Earth Engine effectue le calcul dans un système de coordonnées sphériques, avec une précision de projection donnée par maxError
. Si nécessaire, vous pouvez également spécifier une projection spécifique dans laquelle effectuer le calcul.