Geometrik İşlemler

Earth Engine, Geometry nesnelerinde çok çeşitli işlemleri destekler. Bunlara, ayrı geometrilerde yapılan işlemler (ör. tampon, merkez, sınır kutusu, çevre, dışbükey kabuk vb.) dahildir. Örneğin:

Kod Düzenleyici (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');

Önceki örnekte, tampon mesafesinin metre cinsinden belirtildiğini görebilirsiniz.

Desteklenen geometrik işlemler arasında kesişim, birleştirme, fark, mesafe, içerir vb. gibi geometriler arasındaki ilişkisel hesaplamalar da bulunur. Geometriler, bu ilişkilerin bazılarını test etmek için varsayılan olarak "çift-tek" kuralını kullanır. Çift-tek kuralına göre, bir noktadan poligonun dışında olduğu bilinen bir noktaya giden bir çizgi tek sayıda başka kenar geçerse bu nokta poligonun içindedir. Bir poligonun içi, deliğin içinde değil, kabuğun içinde kalan her şeydir. Basit bir örnek olarak, dairesel bir poligon içindeki bir noktanın poligondan çıkmak için tam olarak bir kenarı geçmesi gerekir. Geometriler, gerekirse isteğe bağlı olarak "sol-içte" kuralını kullanabilir. Bir halkanın noktalarını verilen sırayla yürüdüğünüzü düşünün. İç kısım solda olur.

"Sol-içte" kuralı (evenOdd: false) ile oluşturulan geometriler ile "çift-tek" kuralı ile oluşturulan geometriler arasındaki farkı göstermek için aşağıdaki örnekte bir nokta iki farklı poligonla karşılaştırılmıştır:

Kod Düzenleyici (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

Önceki örnekte, Polygon yapıcısına sağlanan koordinatların sırasının, sol iç poligon oluşturulurken sonucu nasıl etkilediği gösterilmektedir. Daha açık belirtmek gerekirse, nokta sol iç poligonun dışında ancak çift-tek poligonun içindedir.

Aşağıdaki örnekte, iki poligon arasındaki ilişkiye göre türetilmiş geometriler hesaplanır ve görselleştirilir:

Kod Düzenleyici (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');

Bu örneklerde, maxError parametresinin geometri işlemleri için bir metreye ayarlandığını unutmayın. maxError, geometriyi değiştirebilecek dönüşümlerden (ör. projeksiyon veya yeniden projeksiyon) kaynaklanan, metre cinsinden izin verilen maksimum hatadır. Geometrilerden biri diğerinden farklı bir projeksiyondaysa Earth Engine, hesaplamayı maxError tarafından verilen bir projeksiyon hassasiyetiyle küresel koordinat sisteminde yapar. Gerekirse hesaplamanın yapılacağı belirli bir projeksiyon da belirtebilirsiniz.