AlphaEarth Foundations का GCS डेटा

gs://alphaearth_foundations GCS बकेट में COG (क्लाउड ऑप्टिमाइज़्ड जियोटीआईएफ़) फ़ाइलें होती हैं. ये सभी फ़ाइलें मिलकर, AlphaEarth Foundations का सालाना सैटलाइट एम्बेडिंग डेटासेट बनाती हैं. इसमें साल 2017 से 2024 तक के सालाना एम्बेडिंग शामिल हैं.

लाइसेंस

इस डेटासेट का लाइसेंस, CC-BY 4.0 के तहत मिला है. इसके लिए, एट्रिब्यूशन के तौर पर यह टेक्स्ट देना ज़रूरी है: "AlphaEarth Foundations Satellite Embedding dataset को Google और Google DeepMind ने बनाया है."

इस बकेट को "अनुरोध करने वाला व्यक्ति पेमेंट करेगा" के तौर पर सेट अप किया गया है. इसलिए, डेटा डाउनलोड करने पर इग्रेस और अन्य शुल्क लग सकते हैं.

डायरेक्ट्री स्ट्रक्चर

इन्हें साल के हिसाब से डायरेक्ट्री में बांटा जाता है. हर साल की डायरेक्ट्री को 120 सबडायरेक्ट्री में बांटा जाता है. हर सबडायरेक्ट्री, एक यूटीएम ज़ोन के हिसाब से होती है. इनके नाम में ज़ोन नंबर और गोलार्ध (N या S) की जानकारी होती है.

हर डायरेक्ट्री में कई COG फ़ाइलें होती हैं. इन फ़ाइलों में, उस यूटीएम ज़ोन के लिए सभी पिक्सल डेटा मौजूद होता है.

फ़ाइल स्ट्रक्चर

हर फ़ाइल 8192x8192 पिक्सल की है और इसमें 64 चैनल हैं. डी-क्वांटाइज़ेशन मैपिंग लागू करने के बाद (नीचे देखें), हर पिक्सल के मैग्नीट्यूड को सामान्य किया गया है, ताकि इसकी यूक्लिडियन लंबाई 1 हो.

इन फ़ाइलों में 4096x4096 पिक्सल, 2048x2048 पिक्सल वगैरह पर ओवरव्यू लेयर होती हैं. ये लेयर, 1x1 टॉप-लेवल ओवरव्यू लेयर तक होती हैं. खास जानकारी देने वाली इन लेयर को इस तरह से बनाया जाता है कि खास जानकारी देने वाले हर पिक्सल में, उस पिक्सल के नीचे मौजूद सबसे ज़्यादा रिज़ॉल्यूशन वाले पिक्सल का औसत शामिल हो. साथ ही, औसत के मैग्नीट्यूड को सामान्य किया गया हो, ताकि उसकी लंबाई 1 हो.

चैनल, Satellite Embedding डेटासेट के A00 से A63 ऐक्सिस के क्रम में होते हैं. सीओजीएस में चैनलों के लिए भी यह नाम शामिल होता है.

हर चैनल के लिए, हर पिक्सल की वैल्यू एक साइंड 8-बिट पूर्णांक होती है. इन वैल्यू को एम्बेडिंग की नेटिव वैल्यू ([-1, 1] की रेंज में) के साथ मैप करने का तरीका यहां बताया गया है.

वैल्यू -128, मास्क किए गए पिक्सल से मेल खाती है. अगर यह किसी एक चैनल में मौजूद है, तो यह सभी चैनलों में मौजूद होगा. सीओजीएस में यह जानकारी दिखती है. इसका मतलब है कि उनमें NoData वैल्यू को -128 पर सेट किया गया है.

हर फ़ाइल के नाम में भी कुछ जानकारी होती है. उदाहरण के लिए, gs://alphaearth_foundations/satellite_embedding/v1/annual/2019/1S/x8qqwcsisbgygl2ry-0000008192-0000000000.tiff नाम की फ़ाइल देखें. जैसा कि ऊपर बताया गया है, यह फ़ाइल 2019 की सालाना एम्बेडिंग का हिस्सा है. साथ ही, यह यूटीएम ज़ोन 1S (ज़ोन 1, दक्षिणी गोलार्ध) में है. बेस फ़ाइल का नाम, x8qqwcsisbgygl2ry-0000008192-0000000000, इस फ़ाइल को Earth Engine Satellite Embedding Image के नाम से लिंक करने के लिए इस्तेमाल किया जाता है. इस उदाहरण में, यह फ़ाइल Earth Engine की इमेज GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL/x8qqwcsisbgygl2ry के एक हिस्से से जुड़ी है. फ़ाइल नाम के दो दशमलव हिस्से बताते हैं कि इस COG की वैल्यू, Earth Engine इमेज के हिसाब से कहां हैं. ये वैल्यू, Y में ऑफ़सेट के तौर पर होती हैं. इसके बाद, X में ऑफ़सेट होता है. इस मामले में, COG के पिक्सल का शुरुआती बिंदु, Earth Engine इमेज के शुरुआती बिंदु के हिसाब से (0, 8192) पर है. ऐसा इसलिए किया गया, क्योंकि हर Earth Engine इमेज (जो 16384x16384 पिक्सल की होती है) को सबडिवाइड करना ज़रूरी था, ताकि नतीजे में मिलने वाले COG बहुत बड़े न हों.

डी-क्वांटाइज़ेशन

हर पिक्सल के हर चैनल में मौजूद रॉ साइंड 8-बिट वैल्यू को विश्लेषण के लिए तैयार फ़्लोटिंग-पॉइंट वैल्यू में बदलने के लिए, यह मैपिंग की जाती है. रॉ साइंड 8-बिट वैल्यू -127 से 127 के बीच होती है. -128 को "कोई डेटा नहीं" वैल्यू के तौर पर रिज़र्व किया गया है. विश्लेषण के लिए तैयार फ़्लोटिंग-पॉइंट वैल्यू -1 से 1 के बीच होती है.

  • 127.5 से भाग दें
  • स्क्वेयर
  • ओरिजनल वैल्यू के साइन से गुणा करें

इसे NumPy में ऐसे दिखाया जाएगा

  # values is a NumPy array of raw pixel values
  de_quantized_values = ((values / 127.5) ** 2) * np.sign(values)

Earth Engine में, इससे जुड़ी कार्रवाई यह होगी

  var de_quantized_values = values.divide(127.5).pow(2).multiply(values.signum());

डाउनसैंपल किए गए पिरामिड बनाना

अगर आपको इन सीओजी की बेस रिज़ॉल्यूशन लेयर से, डाउनसैंपल किए गए वर्शन या बाहरी ओवरव्यू बनाने हैं (उदाहरण के लिए, कई फ़ाइलों को मोज़ेक करने के बाद), तो आपको यहां दिया गया तरीका अपनाना होगा. स्टैंडर्ड रास्टर पिरामिडिंग तकनीकें (जैसे, पूर्णांक की रॉ वैल्यू पर -r average के साथ gdaladdo का इस्तेमाल करना) सही नतीजे नहीं देंगी.

  1. डी-क्वांटाइज़ करें: ऊपर बताए गए तरीके का इस्तेमाल करके, रॉ 8-बिट पूर्णांकों को फ़्लोट में बदलें.
  2. वेक्टर जोड़ना: डी-क्वांटाइज़ किए गए वेक्टर के हर एलिमेंट को जोड़ें.
  3. सामान्य बनाना: नतीजे के तौर पर मिले सम वेक्टर के यूक्लिडियन नॉर्म की गणना करें. इसके बाद, इसे नॉर्म से भाग दें, ताकि इसे यूनिट लेंथ के हिसाब से फिर से सामान्य बनाया जा सके.
import numpy as np

# Assuming 'raw_values' is a NumPy array of shape (N, 64)
# containing the raw signed 8-bit integers from N pixels.
# N = 4 for a 2x2 aggregation, for example.

# 1. De-quantize
de_quantized_values = ((raw_values / 127.5) ** 2) * np.sign(raw_values)

# 2. Sum the de-quantized vectors
sum_vec = np.sum(de_quantized_values, axis=0)  # Shape (64,)

# 3. Normalize the sum vector
norm = np.linalg.norm(sum_vec)
# Add epsilon to prevent division by zero
pyramided_vec = sum_vec / (norm + 1e-9)

# 'pyramided_vec' is the correctly downsampled 64-dimensional unit vector.

लागत के ब्यौरे में मौजूद खास जानकारी वाली लेयर, इस तरीके का इस्तेमाल करके जनरेट की गई हैं. अगर ये आपकी ज़रूरतों के मुताबिक हैं, तो खास जानकारी वाली इन लेयर का इस्तेमाल किया जा सकता है. इसके लिए, आपको कोई हिसाब-किताब करने की ज़रूरत नहीं है.

मेनिफ़ेस्ट और इंडेक्स

इस डेटासेट में मौजूद फ़ाइलों की सूची, gs://alphaearth_foundations/satellite_embedding/v1/annual/manifest.txt में देखी जा सकती है.

फ़ाइल के नामों से यह पता नहीं चलता कि ये दुनिया के किस हिस्से को कवर करती हैं. इसलिए, एक इंडेक्स भी दिया गया है. यह इंडेक्स तीन फ़ॉर्मैट (GeoParquet, GeoPackage, और CSV) में उपलब्ध है. यह इंडेक्स, gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.parquet, gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.gpkg, और gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.csv फ़ाइलों में मौजूद है. इस इंडेक्स में, डेटासेट की हर फ़ाइल के लिए एक एंट्री होती है. हर फ़ाइल के लिए दी गई जानकारी

  • फ़ाइल की ज्यामिति (ज्यॉमेट्री) WGS84 के तौर पर (यानी, EPSG:4326) पॉलीगॉन. CSV फ़ॉर्म में, यह जानकारी WKT कॉलम में होती है. इस ज्यामिति की गणना कैसे की जाती है, इस बारे में जानने के लिए यहां दी गई जानकारी देखें.
  • crs: यह इमेज जिस यूटीएम ज़ोन की है उसका सीआरएस, ईपीएसजी कोड के तौर पर. जैसे, EPSG:32610.
  • year: वह साल जिसकी इमेज है.
  • utm_zone: इमेज का यूटीएम ज़ोन, जैसे कि 10N.
  • utm_west, utm_south, utm_east, utm_north: रॉ पिक्सल ऐरे की यूटीएम सीमाएं. इससे किसी भी तरह की ज्यामिति प्रोसेसिंग नहीं होती है. इसमें सभी पिक्सल शामिल होते हैं, भले ही वे मान्य हों या न हों.
  • wgs84_west, wgs84_south, wgs84_east, wgs84_north: WGS84 ज्यामिति का कम से कम/ज़्यादा से ज़्यादा देशांतर और अक्षांश.

ज्यामिति को प्रोसेस करना

पिक्सेल ऐरे, मूल रूप से किसी यूटीएम ज़ोन में होता है. इसलिए, उस यूटीएम ज़ोन में पिक्सेल ऐरे का बाउंडिंग बॉक्स एक सामान्य आयत होता है. उस बाउंडिंग बॉक्स को WGS84 में पॉलीगॉन में बदल दिया जाता है. इस पॉलीगॉन में कई अतिरिक्त पॉइंट शामिल हैं, ताकि इसके किनारे WGS84 में मौजूद घुमावदार लाइनों के साथ-साथ चलें. ये घुमावदार लाइनें, यूटीएम में मौजूद सीधी लाइनों में बदल जाती हैं. यह पॉलीगॉन, इमेज में मौजूद पिक्सल के मान्य/अमान्य होने पर ध्यान नहीं देता. यह सिर्फ़ इमेज के पिक्सल ऐरे की सीमाओं पर ध्यान देता है.

इसके बाद, पॉलीगॉन को इमेज के यूटीएम ज़ोन के कम से कम और ज़्यादा से ज़्यादा देशांतर पर क्लिप किया जाता है. इस वजह से, हो सकता है कि यह कुछ ऐसे मान्य पिक्सल को शामिल न करे जो यूटीएम ज़ोन के किनारे पर मौजूद हैं. इन पिक्सल को इंडेक्स से हटाने पर कोई समस्या नहीं होनी चाहिए: आस-पास के यूटीएम ज़ोन की कुछ इमेज में वह इलाका शामिल होना चाहिए.

ध्यान दें कि यूटीएम ज़ोन के कम से कम/ज़्यादा से ज़्यादा देशांतर पर क्लिप करने का मतलब है कि कोई भी बहुभुज, एंटीमेरिडियन को पार नहीं करता है. इससे इस फ़ाइल को प्रोसेस करना थोड़ा आसान हो जाएगा.