נתוני GCS של AlphaEarth Foundations

gs://alphaearth_foundations קטגוריית GCS מכילה קובצי COG (Cloud Optimized GeoTIFF) שביחד מרכיבים את מערך הנתונים השנתי של Satellite Embedding של AlphaEarth Foundations. הוא מכיל את ההטמעות השנתיות לשנים 2017 עד 2025, כולל.

‫Google מחויבת להמשיך ליצור שכבות הטמעה שנתיות של נתוני לוויין, ותספק הודעה מראש של שנה לפחות על כל שינוי צפוי באספקה, בכפוף לזמינות השוטפת של זרמי נתוני הקלט מ-USGS ומ-ESA, שעליהם מתבססת יצירת מערך הנתונים.

רישיון

קבוצת הנתונים הזו מורשית לשימוש במסגרת CC-BY 4.0, ונדרש להוסיף את טקסט השיוך הבא: "קבוצת הנתונים AlphaEarth Foundations Satellite Embedding נוצרה על ידי Google ו-Google DeepMind".

הקטגוריה הזו מוגדרת כ'הגורם המבקש משלם', ולכן הורדת נתונים עלולה לגרור חיובים על תעבורת נתונים יוצאת וחיובים אחרים.

מבנה הספרייה

הקבצים מחולקים לספריות לפי שנה. כל ספרייה של שנה מחולקת ל-120 ספריות משנה, אחת לכל אזור UTM, והשמות שלהן משקפים את מספר האזור ואת חצי הכדור (N או S).

בכל ספרייה יש מספר קובצי COG. הקבצים האלה מכילים את כל נתוני הפיקסלים של אזור ה-UTM הזה.

מבנה הקובץ

כל קובץ הוא בגודל 8,192x8,192 פיקסלים, עם 64 ערוצים. הגודל של כל פיקסל, אחרי החלת מיפוי ביטול הכמות (ראו בהמשך), עבר נורמליזציה כך שאורך אוקלידי יהיה 1.

הקבצים מכילים שכבות סקירה כללית ברזולוציה של 4096x4096 פיקסלים, 2048x2048 פיקסלים וכן הלאה, עד לשכבת סקירה כללית ברמה העליונה של 1x1. שכבות הסיכום האלה מורכבות כך שכל פיקסל בסיכום הוא הממוצע של הפיקסלים ברזולוציה הכי גבוהה מתחת לפיקסל הזה בסיכום, והגודל של הממוצע עבר נורמליזציה כך שהאורך שלו הוא 1.

הערוצים תואמים, לפי הסדר, לצירים A00 עד A63 של מערך הנתונים Satellite Embedding. גם ב-COG מופיע השם הזה של הערוצים.

הערך של כל פיקסל בכל ערוץ הוא מספר שלם חתום של 8 ביט. האופן שבו הערכים האלה ממופים לערכים המקוריים (בטווח [‎-1, 1]) של ההטמעות מוסבר במאמר ביטול קוונטיזציה.

הערך ‎-128 מתאים לפיקסל מוסתר. אם הוא מופיע בערוץ אחד, הוא יופיע בכל הערוצים. הערך הזה משתקף ב-COGs (כלומר, הערך NoData מוגדר כ-‎-128).

שם כל קובץ מכיל גם מידע מסוים. לדוגמה, נניח שיש קובץ בשם gs://alphaearth_foundations/satellite_embedding/v1/annual/2019/1S/x8qqwcsisbgygl2ry-0000008192-0000000000.tiff. כפי שאפשר לראות בשם הקובץ, הקובץ הזה הוא חלק מהטמעה שנתית משנת 2019, עבור אזור UTM‏ 1S (אזור 1, חצי הכדור הדרומי). שם הקובץ הבסיסי, x8qqwcsisbgygl2ry-0000008192-0000000000, משמש לקישור הקובץ הזה לשם התמונה המקבילה של הטמעת לוויין ב-Earth Engine. בדוגמה הזו, הקובץ הזה תואם לחלק מהתמונה של Earth Engine‏ GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL/x8qqwcsisbgygl2ry. שני החלקים העשרוניים של שם הקובץ מציינים את המיקום של ערכי ה-COG ביחס לתמונה של Earth Engine, כהיסט ב-Y ואחריו היסט ב-X. במקרה הזה, נקודת המוצא של הפיקסלים ב-COG היא (0, 8192) ביחס לנקודת המוצא של התמונה ב-Earth Engine. הסיבה לכך היא שהיה צורך לחלק כל תמונה של Earth Engine (שהיא בגודל 16,384x16,384 פיקסלים) כדי שקבצי ה-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 האלה (למשל, אחרי יצירת פסיפס מכמה קבצים), אתם צריכים לפעול לפי ההליך הבא. טכניקות פירמידה רגילות של רסטר (למשל, שימוש ב-gdaladdo עם ‎-r average על ערכי המספרים השלמים הגולמיים) לא יניבו תוצאות נכונות.

  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.

שכבות העל ב-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: מערכת ייחוס הקואורדינטות של אזור ה-UTM שאליו שייך האימג' הזה, כקוד EPSG, כמו EPSG:32610.
  • year: השנה שמופיעה בתמונה.
  • utm_zone: אזור ה-UTM של התמונה, כמו 10N.
  • utm_west, utm_south, utm_east, utm_north: הגבולות של מערך הפיקסלים הגולמיים במערכת UTM. הערך הזה לא משקף עיבוד גיאומטרי, והוא כולל את כל הפיקסלים, בין אם הם תקינים ובין אם לא.
  • wgs84_west, wgs84_south, wgs84_east, wgs84_north: קווי האורך וקווי הרוחב המינימליים והמקסימליים של גיאומטריית WGS84.

עיבוד גיאומטרי

מערך הפיקסלים נמצא באופן טבעי באזור UTM מסוים, ולכן באזור UTM הזה תיבת התוחמת של מערך הפיקסלים היא מלבן פשוט. התיבה התוחמת הזו מומרת למצולע ב-WGS84. הפוליגון הזה כולל מספר נקודות נוספות כדי שהקצוות שלו יתאימו באופן מדויק לקווים המעוקלים ב-WGS84 שהקווים הישרים ב-UTM הופכים אליהם. הפוליגון הזה לא מתייחס לתוקף של הפיקסלים בתמונה, אלא רק לגבולות של מערך הפיקסלים של התמונה.

לאחר מכן, הפוליגון נחתך לפי קווי האורך המינימליים והמקסימליים של אזור ה-UTM של התמונה. בפועל, יכול להיות שהמערכת לא תכלול כמה פיקסלים תקינים שחורגים מהקצה של אזור ה-UTM. השמטה של הפיקסלים האלה מהאינדקס לא אמורה לגרום לבעיות: חלק מהתמונה מאזור ה-UTM הסמוך אמור לכסות את האזור הזה.

שימו לב: החיתוך לערכי קו האורך המינימלי והמקסימלי של אזור UTM מבטיח שאף מצולע לא חוצה את קו התאריך הבינלאומי, ולכן העיבוד של הקובץ הזה יהיה פשוט יותר.