gs://alphaearth_foundations GCS बकेट में COG (क्लाउड ऑप्टिमाइज़्ड
GeoTIFF) फ़ाइलें होती हैं. ये फ़ाइलें मिलकर, AlphaEarth Foundations का सालाना
सैटेलाइट
एम्बेडिंग
डेटासेट बनाती हैं. इसमें 2017 से 2025 तक के सालाना एम्बेडिंग शामिल हैं.
Google, सैटेलाइट एम्बेडिंग की सालाना लेयर बनाता रहेगा. साथ ही, डिलीवरी में होने वाले किसी भी संभावित बदलाव के बारे में, कम से कम एक साल पहले सूचना देगा. हालांकि, यह सूचना USGS और ESA से इनपुट डेटा स्ट्रीम की उपलब्धता पर निर्भर करेगी. इनपुट डेटा स्ट्रीम की मदद से ही डेटासेट बनाया जाता है.
लाइसेंस
इस डेटासेट का लाइसेंस CC-BY 4.0 के तहत मिलता है. इसके लिए, एट्रिब्यूशन का यह टेक्स्ट ज़रूरी है: "AlphaEarth Foundations का सैटेलाइट एम्बेडिंग डेटासेट Google और Google DeepMind ने बनाया है."
जुलाई 2026 से, इस बकेट को "प्रोवाइडर पेमेंट करता है" के तौर पर सेट किया गया है.
डायरेक्ट्री स्ट्रक्चर
इन्हें साल के हिसाब से डायरेक्ट्री में बांटा गया है. हर साल की डायरेक्ट्री को 120 सबडायरेक्ट्री में बांटा गया है. हर यूटीएम ज़ोन के लिए एक सबडायरेक्ट्री है. इनके नाम, ज़ोन नंबर और गोलार्ध (N या S) के हिसाब से तय किए जाते हैं.
हर डायरेक्ट्री में कई COG फ़ाइलें होती हैं. इन फ़ाइलों में, उस यूटीएम ज़ोन का सारा पिक्सल डेटा होता है.
फ़ाइल स्ट्रक्चर
हर फ़ाइल 8192x8192 पिक्सल की होती है. इसमें 64 चैनल होते हैं. डी-क्वांटाइज़ेशन मैपिंग लागू करने के बाद (नीचे देखें), हर पिक्सल की मैग्नीट्यूड को सामान्य किया गया है, ताकि इसकी यूक्लिडियन लंबाई 1 हो.
फ़ाइलों में 4096x4096 पिक्सल, 2048x2048 पिक्सल वगैरह की खास जानकारी वाली लेयर होती हैं. साथ ही, इनमें 1x1 टॉप-लेवल की खास जानकारी वाली लेयर भी होती है. खास जानकारी वाली ये लेयर इस तरह बनाई जाती हैं कि खास जानकारी वाले हर पिक्सल में, उस पिक्सल के तहत आने वाले सबसे ज़्यादा रिज़ॉल्यूशन वाले पिक्सल का औसत हो. साथ ही, औसत के मैग्नीट्यूड को सामान्य किया गया है, ताकि इसकी लंबाई 1 हो.
चैनल, सैटेलाइट एम्बेडिंग डेटासेट के A00 से लेकर A63 तक के ऐक्सिस के क्रम में होते हैं. COG में भी चैनलों के लिए यही नाम इस्तेमाल किए जाते हैं.
हर चैनल के लिए, हर पिक्सल की वैल्यू, साइन किया गया 8-बिट इंटिजर होती है. इन वैल्यू को एम्बेडिंग की नेटिव वैल्यू ([-1, 1] की रेंज में) पर मैप करने का तरीका, डी-क्वांटाइज़ेशन में बताया गया है.
वैल्यू -128, मास्क किए गए पिक्सल से जुड़ी होती है. अगर यह किसी एक चैनल में मौजूद है, तो यह सभी चैनलों में मौजूद होगी. COG में यह वैल्यू दिखती है. इसका मतलब है कि इनमें NoData वैल्यू -128 पर सेट होती है.
हर फ़ाइल के नाम में भी कुछ जानकारी होती है. उदाहरण के लिए, gs://alphaearth_foundations/satellite_embedding/v1/annual/2019/1S/x8qqwcsisbgygl2ry-0000008192-0000000000.tiff नाम की फ़ाइल को देखें.
जैसा कि फ़ाइल के नाम से पता चलता है, यह फ़ाइल 2019 के सालाना एम्बेडिंग का हिस्सा है. यह यूटीएम ज़ोन 1S (ज़ोन 1, दक्षिणी गोलार्ध) के लिए है. बेस फ़ाइल का नाम, x8qqwcsisbgygl2ry-0000008192-0000000000, इस फ़ाइल को Earth Engine की सैटेलाइट एम्बेडिंग इमेज के नाम से लिंक करता है. इस उदाहरण में, यह फ़ाइल Earth Engine की इमेज GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL/x8qqwcsisbgygl2ry के एक हिस्से से जुड़ी है. फ़ाइल के नाम के दो डेसिमल हिस्से बताते हैं कि इस COG की वैल्यू, Earth Engine की उस इमेज के मुकाबले कहां हैं. यह जानकारी, Y में ऑफ़सेट के तौर पर दी जाती है. इसके बाद, X में ऑफ़सेट की जानकारी दी जाती है. इस मामले में, COG का पिक्सल ऑरिजिन, Earth Engine की इमेज के ऑरिजिन के मुकाबले (0, 8192) पर है.
ऐसा इसलिए है, क्योंकि Earth Engine की हर इमेज (जो 16384x16384 पिक्सल की होती है) को सबडिवाइड करना ज़रूरी था, ताकि बनने वाली COG ज़्यादा बड़ी न हों.
डी-क्वांटाइज़ेशन
हर पिक्सल के हर चैनल में मौजूद, साइन किए गए 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());
डाउनसैंपल किए गए पिरामिड बनाना
अगर आपको इन COG की बेस रिज़ॉल्यूशन लेयर से, डाउनसैंपल किए गए वर्शन या एक्सटर्नल ओवरव्यू बनाने हैं (उदाहरण के लिए, कई फ़ाइलों को मोज़ेक करने के बाद), तो आपको यह तरीका अपनाना होगा. रास्टर पिरामिडिंग के स्टैंडर्ड तरीकों (जैसे, रॉ इंटिजर वैल्यू पर -r average के साथ gdaladdo का इस्तेमाल करना) से सही नतीजे नहीं मिलेंगे.
- डी-क्वांटाइज़ करें: डी-क्वांटाइज़ेशन में बताए गए तरीके का इस्तेमाल करके, रॉ 8-बिट इंटिजर को फ़्लोट में बदलें.
- वेक्टर जोड़ें: डी-क्वांटाइज़ किए गए वेक्टर का एलिमेंट-वाइज़ योग करें.
- सामान्य करें: योग करने पर मिले वेक्टर का यूक्लिडियन नॉर्मल कैलकुलेट करें और उसे यूनिट लेंथ पर फिर से सामान्य करने के लिए, नॉर्मल से भाग दें.
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.
COG में मौजूद खास जानकारी वाली लेयर, इसी तरीके का इस्तेमाल करके जनरेट की गई हैं. अगर ये आपकी ज़रूरतों के हिसाब से हैं, तो बिना कोई अतिरिक्त कैलकुलेशन किए, खास जानकारी वाली इन लेयर का इस्तेमाल किया जा सकता है.
मेनिफ़ेस्ट और इंडेक्स
इस डेटासेट में मौजूद फ़ाइलों की सूची, 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 कोड के तौर पर, उस यूटीएम ज़ोन का सीआरएस जिससे यह इमेज जुड़ी है. जैसे,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 में घुमावदार लाइनों के हिसाब से हों. ये लाइनें, यूटीएम में सीधी लाइनों में बदल जाती हैं. इस पॉलीगॉन में, इमेज में मौजूद पिक्सल की वैधता को ध्यान में नहीं रखा जाता. इसमें सिर्फ़ इमेज के पिक्सल ऐरे की बाउंड्री शामिल होती है.
इसके बाद, पॉलीगॉन को इमेज के यूटीएम ज़ोन के कम से कम और ज़्यादा से ज़्यादा देशांतर के हिसाब से क्लिप किया जाता है. असल में, इसकी वजह से कुछ मान्य पिक्सल शामिल नहीं हो पाते. ये पिक्सल, यूटीएम ज़ोन के किनारे से आगे तक फैले होते हैं. इंडेक्स से इन पिक्सल को हटाने पर कोई समस्या नहीं होनी चाहिए. आस-पास के यूटीएम ज़ोन की कोई इमेज, उस इलाके को कवर करेगी.
ध्यान दें कि यूटीएम ज़ोन के कम से कम और ज़्यादा से ज़्यादा देशांतर के हिसाब से क्लिप करने का मतलब है कि कोई भी पॉलीगॉन, एंटीमेरिडियन को पार नहीं करता. इससे इस फ़ाइल को प्रोसेस करना थोड़ा आसान हो जाता है.