जियोमेट्रिक ऑपरेशन

Earth Engine, Geometry ऑब्जेक्ट पर कई तरह के ऑपरेशन करता है. इनमें अलग-अलग ज्यामिति पर कार्रवाइयां शामिल हैं, जैसे कि बफ़र, सेंट्राइड, बाउंडिंग बॉक्स, परिधि, उत्तल कवच वगैरह का हिसाब लगाना. उदाहरण के लिए:

कोड एडिटर (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');

पिछले उदाहरण से देखें कि बफ़र की दूरी मीटर में दी गई है.

ज्यामितीय ऑपरेशन में, ज्यामितीय आकृतियों के बीच संबंधों का हिसाब लगाना भी शामिल है. जैसे, इंटरसेक्शन, यूनियन, अंतर, दूरी, इसमें शामिल है वगैरह. इनमें से कुछ संबंधों की जांच करने के लिए, ज्यामितीय आकृतियां डिफ़ॉल्ट रूप से “सम-विषम” नियम का इस्तेमाल करती हैं. सम-विषम नियम के मुताबिक, कोई बिंदु पॉलीगॉन के अंदर होता है, अगर उस बिंदु से किसी ऐसे बिंदु तक की लाइन जो पॉलीगॉन के बाहर है, वह विषम संख्या में अन्य किनारों को पार करती है. पॉलीगॉन के अंदर का मतलब, शेल के अंदर मौजूद सभी चीज़ों से है, न कि छेद के अंदर मौजूद चीज़ों से. एक आसान उदाहरण के तौर पर, किसी सर्कुलर पॉलीगॉन में मौजूद बिंदु को पॉलीगॉन से बाहर निकलने के लिए, ठीक एक किनारे को पार करना होगा. ज़रूरत पड़ने पर, ज्यामिति के लिए "लेफ़्ट-इनसाइड" नियम का इस्तेमाल किया जा सकता है. मान लें कि किसी रिंग के पॉइंट को दिए गए क्रम में चलते हुए, अंदर की ओर जाना है.

"लेफ़्ट-इनसाइड" नियम (evenOdd: false) और "सम-विषम" नियम से बनाई गई ज्यामिति के बीच का अंतर दिखाने के लिए, यहां दिए गए उदाहरण में एक पॉइंट की तुलना दो अलग-अलग पॉलीगॉन से की गई है:

कोड एडिटर (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

पिछले उदाहरण में दिखाया गया है कि बाईं ओर मौजूद पॉलीगॉन बनाने पर, Polygon कन्स्ट्रक्टर को दिए गए निर्देशांक के क्रम का नतीजे पर क्या असर पड़ता है. खास तौर पर, यह पॉइंट बाईं ओर मौजूद अंदरूनी पॉलीगॉन के बाहर है, लेकिन सम-विषम पॉलीगॉन के अंदर है.

नीचे दिए गए उदाहरण में, दो पॉलीगॉन के बीच के संबंध के आधार पर, व्युत्पन्न ज्यामिति का हिसाब लगाया गया है और उसे विज़ुअलाइज़ किया गया है:

कोड एडिटर (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');

इन उदाहरणों में, ध्यान दें कि ज्यामिति ऑपरेशन के लिए, maxError पैरामीटर को एक मीटर पर सेट किया गया है. maxError, ट्रांसफ़ॉर्मेशन (जैसे कि प्रोजेक्शन या फिर से प्रोजेक्शन) से होने वाली गड़बड़ी की ज़्यादा से ज़्यादा सीमा है. यह गड़बड़ी, ज्यामिति में बदलाव कर सकती है. अगर कोई ज्यामिति किसी दूसरे प्रोजेक्शन में है, तो Earth Engine, गोलाकार निर्देशांक प्रणाली में हिसाब लगाएगा. साथ ही, maxError से दिए गए प्रोजेक्शन की सटीक जानकारी का इस्तेमाल करेगा. ज़रूरत पड़ने पर, कैलकुलेशन के लिए कोई खास प्रोजेक्शन भी चुना जा सकता है.