gs://alphaearth_foundations GCS बकेट में COG (क्लाउड ऑप्टिमाइज़्ड जियोटीआईएफ़) फ़ाइलें होती हैं. ये सभी फ़ाइलें मिलकर, AlphaEarth Foundations का सालाना सैटलाइट एम्बेडिंग डेटासेट बनाती हैं. इसमें साल 2017 से 2025 तक के सालाना एम्बेडिंग शामिल हैं.
Google, हर साल सैटेलाइट एम्बेडिंग लेयर बनाने के लिए प्रतिबद्ध है. साथ ही, वह डिलीवरी में होने वाले किसी भी संभावित बदलाव के बारे में कम से कम एक साल पहले सूचना देगा. हालांकि, यह USGS और ESA से इनपुट डेटा स्ट्रीम की उपलब्धता पर निर्भर करता है, जिस पर डेटासेट बनाने की प्रोसेस निर्भर करती है.
लाइसेंस
इस डेटासेट को CC-BY 4.0 के तहत लाइसेंस मिला है. इसके लिए, एट्रिब्यूशन के तौर पर यह टेक्स्ट देना ज़रूरी है: "The AlphaEarth Foundations Satellite Embedding dataset is produced by Google and 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 के एक हिस्से से जुड़ी है. फ़ाइल के नाम के दो दशमलव हिस्से बताते हैं कि इस सीओजी की वैल्यू, 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.
COGs में मौजूद खास जानकारी वाली लेयर, इस तरीके का इस्तेमाल करके जनरेट की गई हैं. अगर ये आपकी ज़रूरतों के मुताबिक हैं, तो बिना किसी अतिरिक्त कैलकुलेशन के, इन खास जानकारी वाली लेयर का तुरंत इस्तेमाल किया जा सकता है.
मेनिफ़ेस्ट और इंडेक्स
इस डेटासेट में मौजूद फ़ाइलों की सूची, 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 में मौजूद घुमावदार लाइनों के साथ-साथ चलें. ये घुमावदार लाइनें, यूटीएम में मौजूद सीधी लाइनों में बदल जाती हैं. यह पॉलीगॉन, इमेज में पिक्सल की वैधता को ध्यान में नहीं रखता. यह सिर्फ़ इमेज के पिक्सल ऐरे की सीमाओं को ध्यान में रखता है.
इसके बाद, पॉलीगॉन को इमेज के यूटीएम ज़ोन के कम से कम और ज़्यादा से ज़्यादा देशांतर पर क्लिप किया जाता है. हालांकि, ऐसा हो सकता है कि इस वजह से, कुछ ऐसे मान्य पिक्सल शामिल न किए जाएं जो यूटीएम ज़ोन के किनारे से आगे बढ़ जाते हैं. इन पिक्सल को इंडेक्स से हटाने पर कोई समस्या नहीं होनी चाहिए: आस-पास के यूटीएम ज़ोन की कुछ इमेज में उस इलाके को शामिल किया जाना चाहिए.
ध्यान दें कि यूटीएम ज़ोन के कम से कम और ज़्यादा से ज़्यादा देशांतर पर क्लिप करने का मतलब है कि कोई भी पॉलीगॉन, एंटीमेरिडियन को पार नहीं करता है. इससे इस फ़ाइल को प्रोसेस करना थोड़ा आसान हो जाता है.