העלאת מניפסט של תמונה

אם אתם זקוקים לגמישות רבה יותר בהעלאת תמונות ל-Google Earth Engine ‏ (EE) מזו שמספקים ממשק המשתמש של Code Editor או הפקודה upload של כלי שורת הפקודה'earthengine', תוכלו לתאר את העלאת התמונה באמצעות קובץ JSON שנקרא 'מניפסט', ולהשתמש בפקודה upload image --manifest של כלי שורת הפקודה.

דוגמה מלאה מופיעה בnotebook הזה ב-Colab, שבו מוצגת העלאה של משבצות תמונה כנכס יחיד באמצעות מניפסט.

הגדרה חד-פעמית

  1. העלאות של מניפסט פועלות רק עם קבצים שנמצאים ב-Google Cloud Storage. כדי להתחיל להשתמש ב-Google Cloud Storage, צריך ליצור פרויקט ב-Google Cloud, אם עדיין אין לכם פרויקט כזה. לתשומת ליבכם: בתהליך ההגדרה צריך לציין כרטיס אשראי לחיוב. בשלב הזה, EE לא מחייבת אף אחד, אבל העברת קבצים ל-Google Cloud Storage לפני ההעלאה ל-EE כרוכה בעלות קטנה. לגבי נתונים רגילים להעלאה (עשרות או מאות ג'יגה-בייט), העלות תהיה נמוכה למדי.
  2. בפרויקט, מפעילים את Cloud Storage API ויוצרים קטגוריה.
  3. מתקינים את הלקוח של Earth Engine ל-Python. הוא כולל את כלי שורת הפקודה earthengine, שבו נשתמש כדי להעלות נתונים.
  4. להעלאות אוטומטיות, מומלץ להשתמש בחשבון שירות ב-Google Cloud שמשויך לפרויקט. אין צורך בחשבון שירות לצורך בדיקה, אבל כדאי להתחיל להכיר את השימוש בו כשיש לכם זמן.

קבצי מקור גדולים מאוד (100GB או יותר) עשויים להעלות מהר יותר אם הם מחולקים לכמה משבצות.

שמות ומזהים של נכסים

לנכסים שבבעלות פרויקט ב-Cloud, צריך להשתמש במסורת הבאה לשמות הנכסים: projects/some-project-id/assets/some-asset-id.

מידע על שמות של נכסים בפרויקטים מדור קודם ובנכסים שבבעלות משתמשים

בפרויקטים ישנים יותר, שם הנכס במניפסט צריך להיות שונה במקצת ממזהה הנכס שמוצג במקום אחר ב-Earth Engine. כדי להעלות נכסים שמזהי הנכסים שלהם מתחילים ב-users/some_user או ב-projects/some_project, צריך להוסיף את המחרוזת projects/earthengine-legacy/assets/ לשם הנכס במניפסט לפני המזהה. לדוגמה, צריך להעלות את מזהה הנכס EE‏ users/username/my_geotiff בשם projects/earthengine-legacy/assets/users/username/my_geotiff.

כן, כלומר מזהי projects/some_projects/some_asset מומרים לשמות שבהם projects מופיע פעמיים: projects/earthengine-legacy/assets/projects/some_projects/some_asset. זה אולי מבלבל, אבל הדבר נדרש כדי לעמוד בסטנדרטים של Google Cloud API.

שימוש במניפסטים

קוד המניפסט הבסיסי מוצג בבלוק הקוד הבא. הוא מעלה קובץ בשם small.tif מקטגוריה של Google Cloud Storage בשם gs://earthengine-test.

{
  "name": "projects/some-project-id/assets/some-asset-id",
  "tilesets": [
    {
      "sources": [
        {
          "uris": [
            "gs://earthengine-test/small.tif"
          ]
        }
      ]
    }
  ]
}

כדי להשתמש בו, שומרים אותו בקובץ בשם manifest.json ומריצים את הפקודה הבאה:

earthengine upload image --manifest /path/to/manifest.json

(הקובץ gs://earthengine-test/small.tif קיים וניתן לקרוא אותו באופן ציבורי – אפשר להשתמש בו לצורך בדיקה).

ערכות אריחים

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

  • פסיפסים. לפעמים כמה קבצים מייצגים כמה משבצות (לדוגמה, כל משבצת היא ריבוע של 1x1 מעלות). קבצים כאלה צריך למזג (לצרף) לאותה תדרית בנכס EE.
  • להפריד בין הלהקות. לפעמים, כמה קבצים מייצגים כמה להקות. קבצים כאלה צריך לערום יחד כפסים בנכס EE.

(יכול להיות שתצטרכו להשתמש בשתי הדרכים בו-זמנית, אבל זה מצב נדיר).

כדי לתאר את האפשרויות האלה, המניפסטים כוללים את המושג tileset. ערכת tileset אחת תואמת למקור GDAL אחד. לכן, לכל המקורות ב-tileset יחיד צריך להיות אותו מבנה GDAL (מספר הסטריפים והסוג שלהם, הקרנה, טרנספורמציה, ערך חסר). מכיוון שמקור GDAL יכול לכלול כמה פסים, ערכת tileset אחת עשויה להכיל נתונים לכמה פסים של EE.

בטמעת פסיפס, המניפסט ייראה כך:

{
  "name": "projects/some-project-id/assets/some-asset-id",
  "tilesets": [
    {
      "sources": [
        {
          "uris": [
            "gs://bucket/N30W22.tif"
          ]
        },
        {
          "uris": [
            "gs://bucket/N31W22.tif"
          ]
        }
      ]
    }
  ]
}

בתחנות נפרדות, המניפסט ייראה כך (צריך גם להוסיף קטע bands כפי שמוסבר בהמשך):

{
  "name": "projects/some-project-id/assets/some-asset-id",
  "bands": ...,
  "tilesets": [
    {
      "id": "tileset_for_band1",
      "sources": [
        {
          "uris": [
            "gs://bucket/band1.tif"
          ]
        }
      ]
    },
    {
      "id": "tileset_for_band2",
      "sources": [
        {
          "uris": [
            "gs://bucket/band2.tif"
          ]
        }
      ]
    }
  ]
}

שימו לב: במקרה של פסים נפרדים, צריך לתת לכל קבוצת מפות מזהה tileset שונה לצורך הבהרה. מזהה ערכת האריחים יכול להיות מחרוזת שרירותית – המחרוזות האלה לא נשמרות בנכס שהועלו. מזהים של ערכות משבצות משמשים רק בתהליך הטמעת הנתונים (ingestion) כדי להבדיל בין ערכות משבצות מוערמות זו מזו.

תחום תדרים

הקונספט השני החשוב הוא התאמת קובצי המקור לתחומי הנכסים של EE. כדי לעשות זאת, משתמשים בקטע bands במניפסט.

אפשר להשמיט את הקטע bands. במקרה כזה, הפסקות נוצרות קודם מהקבצים ב-tileset הראשון, אחר כך מה-tileset הבא וכן הלאה. כברירת מחדל, השמות של הפסקות הזמן הם 'b1', 'b2' וכו'. כדי לשנות את שמות ברירת המחדל של הפסקות הזמן, צריך לכלול קטע bands בסוף, כך:

{
  "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id",
  "tilesets": [
    {
      "sources": [
        {
          "uris": [
            "gs://bucket/rgb.tif"
          ]
        }
      ]
    }
  ],
  "bands": [
    {
      "id": "R",
      "tilesetBandIndex": 0
    },
    {
      "id": "G",
      "tilesetBandIndex": 1
    },
    {
      "id": "B",
      "tilesetBandIndex": 2
    }
  ]
}

מספר הלהקות של EE חייב להיות זהה למספר הכולל של הלהקות בכל קבוצות האריחים.

אם אתם לא רוצים להטמיע את כל הערוצים מקובץ, תוכלו להשתמש בשדה tilesetBandIndex כדי לציין אילו מהערוצים של GDAL צריך להטמיע. הערך של tilesetBandIndex בפס הראשון הוא 0.

דוגמה:

נניח שקובץ המקור מכיל ארבעה פסים: ‎tmin,‏ ‎tmin_error,‏ ‎tmax,‏ ‎tmax_error. אנחנו רוצים להטמיע רק את 'tmin' ו-'tmax'. קטעי המניפסט הרלוונטיים ייראו כך:

{
  "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id",
  "tilesets": [
    {
      "id": "temperature",
      "sources": [
        {
          "uris": [
            "gs://bucket/temperature.tif"
          ]
        }
      ]
    }
  ],
  "bands": [
    {
      "id": "tmin",
      "tilesetBandIndex": 0,
      "tilesetId": "temperature"
    },
    {
      "id": "tmax",
      "tilesetBandIndex": 2,
      "tilesetId": "temperature"
    }
  ]
}

רצועות למסכות

הרכיב maskBands במניפסט קובע את האופן שבו מתבצעת ההסתרה של הפס. יש תמיכה בשלושה הגדרות אפשריות של מסכה (אבל תמיד נניח שפס המסכה הוא הפס האחרון בקובץ מסוים).

  1. מסכה לכל רצועות הנתונים באותו קובץ.
  2. מסכה לכל פס הנתונים שמגיע מכל הקבצים האחרים.
  3. מסכה לחלק מהרצועות של הנתונים.

1. התרחיש הנפוץ ביותר הוא קובץ GeoTIFF יחיד שבו הפס האחרון משמש כמסכה לשאר הפסים. האפשרות הזו פועלת רק בקובצי GeoTIFF מסוג Byte. משתמשים במניפסט הבא:

{
  "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id",
  "tilesets": [
    {
      "id": "data_tileset",
      "sources": [
        {
          "uris": [
            "gs://bucket/data_file.tif"
          ]
        }
      ]
    }
  ],
  "bands": [
    {
      "id": "data_band",
      "tilesetId": "data_tileset"
    },
    {
      "id": "qa_band",
      "tilesetId": "data_tileset"
    }
  ],
  "maskBands": [
    {
      "tilesetId": "data_tileset"
    }
  ]
}

2. כדי להשתמש במסכת GeoTIFF כמסכה לכל הערוצים ב-GeoTIFF אחר, משתמשים במניפסט הבא:

{
  "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id",
  "tilesets": [
    {
      "id": "data_tileset",
      "sources": [
        {
          "uris": [
            "gs://bucket/data_file.tif"
          ]
        }
      ]
    },
    {
      "id": "mask_tileset",
      "sources": [
        {
          "uris": [
            "gs://bucket/mask_file.tif"
          ]
        }
      ]
    }
  ],
  "bands": [
    {
      "id": "data_band",
      "tilesetId": "data_tileset"
    },
    {
      "id": "qa_band",
      "tilesetId": "data_tileset"
    }
  ],
  "maskBands": [
    {
      "tilesetId": "mask_tileset"
    }
  ]
}

3. כדי להשתמש ב-GeoTIFF כמסכה לפס ספציפי בקובץ אחר, משתמשים במניפסט הבא (ההבדל מהמקרה הקודם הוא שהשדה bandIds ב-maskBands מוגדר):

{
  "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id",
  "tilesets": [
    {
      "id": "data_tileset",
      "sources": [
        {
          "uris": [
            "gs://bucket/data_file.tif"
          ]
        }
      ]
    },
    {
      "id": "mask_tileset",
      "sources": [
        {
          "uris": [
            "gs://bucket/mask_file.tif"
          ]
        }
      ]
    }
  ],
  "bands": [
    {
      "id": "data_band",
      "tilesetId": "data_tileset"
    },
    {
      "id": "qa_band",
      "tilesetId": "data_tileset"
    }
  ],
  "maskBands": [
    {
      "tilesetId": "mask_tileset",
      "bandIds": ["data_band"]
    }
  ]
}

בדוגמה האחרונה, אנחנו עובדים עם שתי רצועות מ-tileset‏ data_tileset, אבל מחילים מסכה רק על אחת מהרצועות (data_band), כפי שמצוין בשדה bandIds של אובייקט הרשימה היחיד מסוג maskBands שסופק.

שימו לב שרק הפס האחרון של קבוצת האריחים שצוינה ב-maskBands משמש כפס המסכה.

מדיניות בנושא פירמידה

כשמערכת Earth Engine יוצרת פירמידיות תמונות במהלך הטמעת הנתונים, היא צריכה לצמצם שוב ושוב רשתות של 2x2 פיקסלים לפיקסל אחד, ולהמיר את ערך הפיקסל באופן כלשהו. כברירת מחדל, ערכים של פיקסלים ממוצעים, וזו הדרך הנכונה לפעול ברוב המקרים שבהם רצועת הרשתית מייצגת נתונים רצויים פחות או יותר. עם זאת, יש שני מצבים שבהם ההסתמכות על ברירת המחדל תוביל לתוצאות שגויות. במקרים כאלה, צריך להגדיר את השדה pyramidingPolicy בהגדרת הפס (אם לא מגדירים אותו, הערך שלו יהיה 'MEAN' כברירת מחדל).

לסיווג של תמונות רסטר (למשל, לסיווג של כיסוי פני השטח), הדרך הכי לוגית ליצור פירמידת פיקסלים היא לקחת את הרוב של ארבעת הערכים כדי ליצור את הערך הבא. כדי לעשות זאת, משתמשים במדיניות הפירמידה 'MODE':

{
  "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id",
  "tilesets": [
    {
      "sources": [
        {
          "uris": [
            "gs://bucket/landcover.tif"
          ]
        }
      ]
    }
  ],
  "bands": [
    {
      "id": "landcover",
      "pyramidingPolicy": "MODE"
    }
  ]
}

בפס רסטרים שבהם לא הגיוני להשתמש ב-'MEAN' או ב-'MODE' (לדוגמה, פיקסלים באריזת ביטים), צריך להשתמש במדיניות הפירמידה 'SAMPLE'. הערך של 'SAMPLE' הוא תמיד הערך של הפיקסל הימני העליון בכל רשת 2x2. בדוגמה הבאה הוקצה מדיניות הפירמידה 'MEAN' לרצועה שמייצגת משתנה רציף ('NDVI') ו-'SAMPLE' לרצועה 'QA' של הנתונים.

{
  "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id",
  "tilesets": [
    {
      "sources": [
        {
          "uris": [
            "gs://bucket/ndvi.tif"
          ]
        }
      ]
    }
  ],
  "bands": [
    {
      "id": "NDVI",
      "tilesetBandIndex": 0,
      "pyramidingPolicy": "MEAN"
    },
    {
      "id": "QA",
      "tilesetBandIndex": 1,
      "pyramidingPolicy": "SAMPLE"
    }
  ]
}

שעת התחלה ושעת סיום

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

לרוב, זמן ההתחלה והסיום הוא זמן התצפית, ולא זמן היצירה של קובץ המקור.

מטעמי פשטות, זמן הסיום נחשב כגבול בלעדי. לדוגמה, לנכסים שנמשכים יום אחד בדיוק, צריך להשתמש בשעת חצות של שני ימים רצופים (לדוגמה, 1980-01-31T00:00:00 ו-1980-02-01T00:00:00) לשעת ההתחלה ולשעת הסיום. אם לנכס אין משך זמן, מגדירים את שעת הסיום כזוה לשעת ההתחלה. ייצוג השעות במניפסטים בתור מחרוזות ISO 8601. כדי לפשט את ערכי התאריכים, מומלץ להניח שזמן הסיום הוא בלעדי (לדוגמה, חצות של היום הבא לנכסים יומיים).

דוגמה:

{
  "name": "projects/some-project-id/assets/some-asset-id",
  "tilesets": [
    {
      "sources": [
        {
          "uris": [
            "gs://bucket/img_20190612.tif"
          ]
        }
      ]
    }
  ],
  "startTime": "1980-01-31T00:00:00Z",
  "endTime": "1980-02-01T00:00:00Z"
}

מסמך עזר בנושא מבנה המניפסט

מבנה ה-JSON הבא כולל את כל השדות האפשריים של מניפסט להעלאת תמונות. הגדרות השדות מפורטות בקטע הגדרות השדות של המניפסט שבהמשך.

{
  "name": <string>,
  "tilesets": [
    {
      "dataType": <string>,
      "id": <string>,
      "crs": <string>,
      "sources": [
        {
          "uris": [
            <string>
          ],
          "affineTransform": {
            "scaleX": <double>,
            "shearX": <double>,
            "translateX": <double>,
            "shearY": <double>,
            "scaleY": <double>,
            "translateY": <double>
          }
        }
      ]
    }
  ],
  "bands": [
    {
      "id": <string>,
      "tilesetId": <string>,
      "tilesetBandIndex": <int32>,
      "missingData": {
        "values": [<double>]
      },
      "pyramindingPolicy": <string>
    }
  ],
  "maskBands": [
    {
      "tilesetId": <string>,
      "bandIds": [
        <string>
      ]
    }
  ],
  "footprint": {
    "points": [
      {
        "x": <double>,
        "y": <double>
      }
    ],
    "bandId": <string>
  },
  "missingData": {
     "values": [<double>]
  },
  "pyramidingPolicy": <string>,
  "uriPrefix": <string>,
  "startTime": {
    "seconds": <integer>
  },
  "endTime": {
    "seconds": <integer>
  },
  "properties": {
    <unspecified>
  }
}

הגדרות של שדות מניפסט

שם

string

השם של הנכס שייווצר. name בפורמט projects/*/assets/**‎ (לדוגמה, projects/earthengine-legacy/assets/users/USER/ASSET).

ערכות אריחים

list

רשימה של מילונים שמגדירים מאפיינים של קבוצות משבצות. מידע נוסף זמין בשדות הבאים של רכיבי המילון tilesets.

tilesets[i].dataType

string

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

סוג הנתונים ערך
לא צוין "DATA_TYPE_UNSPECIFIED"
מספר שלם ב-8 סיביות עם סימן ‎"INT8"‎
מספר שלם ללא סימן באורך 8 ביט "UINT8"
מספר שלם ב-16 סיביות עם סימן "INT16"
מספר שלם ללא סימן באורך 16 ביט ‎"UINT16"‎
מספר שלם בסימן ב-32 ביט ‎"INT32"‎
מספר שלם ללא סימן באורך 32 ביט "UINT32"
מספר ממשי (float) ב-32 ביט ‎"FLOAT32"‎
מספר ממשי (float) ב-64 ביט FLOAT64

tilesets[i].id

string

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

tilesets[i].crs

string

מערכת העזר של הקואורדינטות של רשת הפיקסלים, שצוינה כקוד סטנדרטי כשהדבר אפשרי (לדוגמה, קוד EPSG), ובפורמט WKT במקרים אחרים.

tilesets[i].sources

list

רשימת מילונים שמגדירים את המאפיינים של קובץ תמונה ואת קובצי ה-sidecar שלו. מידע נוסף זמין בשדות הבאים של רכיבי המילון sources.

tilesets[i].sources[j].uris

list

רשימה של מזהי ה-URI של הנתונים להטמעה. יש תמיכה רק במזהי URI של Google Cloud Storage. כל מזהה URI צריך להיות מוגדר בפורמט הבא: gs://bucket-id/object-id. האובייקט הראשי צריך להיות הרכיב הראשון ברשימה, והקונטיינרים המשניים צריכים להופיע אחריו. אם ההגדרה מוגדרת, לכל מזהה URI מצורפת הקידומת ImageManifest.uriPrefix.

tilesets[i].sources[j].affineTransform

dictionary

טרנספורמציה אופציונלית של affine. צריך לציין את הפרמטר הזה רק אם הנתונים מ-uris (כולל קובצי sidecar) לא מספיקים כדי למקם את הפיקסלים. הנתונים מוצגים כמילון עם המפתחות הבאים: "scaleX",‏ "shearX",‏ "translateX",‏ "shearY",‏ "scaleY",‏ "translateY". מידע נוסף זמין במאמר העזרה הזה.

מפתחות וערכים לדוגמה:

{
  "scaleX": 0.1,
  "shearX": 0.0,
  "translateX": -180.0,
  "shearY": 0.0,
  "scaleY": -0.1,
  "translateY": 90.0
}

תחומי תדרים

list

רשימה של מילונים שמגדירים את המאפיינים של פס אחד שמקורו ב-tileset. שימו לב שסדר הלהקות בנכס זהה לסדר של bands. מידע נוסף זמין בשדות הבאים של רכיבי מילון bands.

bands[i].id

string

המזהה (השם) של הלהקה.

bands[i].tilesetId

string

המזהה של קבוצת המשבצות (tileset) התואמת לפס.

bands[i].tilesetBandIndex

int32

אינדקס הלהקה שמתחיל בספרה אפס ממערך האריחים התואם ללהקה.

bands[i].missingData.values

list

רשימה של ערכים (סוג double) שמייצגים היעדר נתונים בפס.

bands[i].pyramidingPolicy

string

מדיניות הפירמידה. מידע נוסף זמין בקישור הזה. האפשרויות כוללות:

  • 'MEAN' (ברירת המחדל)
  • "MODE"
  • 'SAMPLE'

maskBands

list

רשימה של מילונים שמגדירים את המאפיינים של רצועת מסכה אחת שמקורה ב-tileset. אפשר לספק עד 1 רצועת מסכה. מידע נוסף זמין בשדות הבאים של רכיבי מילון maskBands.

maskBands[i].tilesetId

string

המזהה של קבוצת האריחים שתואמת לרצועת המסכה. תמיד משתמשים בפס האחרון של קבוצת האריחים בתור פס המסכה.

maskBands[i].bandIds

list of strings

רשימת המזהים של הלהקות שאלהן חלה הלהקה של המסכה. אם השדה ריק, הפס של המסכה יחול על כל הפסים בנכס. לכל פס יכולה להיות רק פס תאמה אחד של מסיכה.

טביעת רגל

dictionary

מילון שמגדיר את המאפיינים של טביעת הרגל של כל הפיקסלים התקינים בתמונה. אם השדה ריק, ברירת המחדל היא כל התמונה. למידע נוסף, ראו את השדות הבאים של רכיבי המילון footprint.

footprint.points

list

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

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

לדוגמה, בתמונה בגודל 2x2 עם כל ארבעת הפיקסלים התקינים, זוהי טבעת אפשרית אחת:

[
  {
    "x": 0.5,
    "y": 0.5
  },
  {
    "x": 0.5,
    "y": 1.5
  },
  {
    "x": 1.5,
    "y": 1.5
  },
  {
    "x": 1.5,
    "y": 0.5
  },
  {
    "x": 0.5,
    "y": 0.5
  }
]

footprint.bandId

string

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

missingData.values

list

רשימה של ערכים (סוג double) שמייצגים היעדר נתונים בכל הפסים של התמונה. ההגדרה חלה על כל הלהקות שלא מציינות missingData משלהם.

pyramidingPolicy

string

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

  • 'MEAN' (ברירת המחדל)
  • "MODE"
  • 'SAMPLE'

uriPrefix

string

קידומת אופציונלית שנוספת לכל uris שמוגדר במניפסט.

startTime

integer

חותמת הזמן המשויכת לנכס, אם יש כזו. בדרך כלל זהו המועד שבו צולמה תמונה מלוויין. בנכסים שתואמים למרווח זמן מסוים, כמו ערכים ממוצעים לאורך חודש או שנה, חותמת הזמן הזו תואמת לתחילת המרווח. מצוין בשניות ובנאנו-שניות (אופציונלי) מאז תחילת הזמן (1 בינואר 1970). ההנחה היא שהשעה היא לפי אזור הזמן UTC.

endTime

integer

בנכסים שתואמים למרווח זמן, כמו ערכים ממוצעים במהלך חודש או שנה, חותמת הזמן הזו תואמת לסוף המרווח הזה (לא כולל). מצוין בשניות ובנאנו-שניות (אופציונלי) מאז תחילת הזמן (1 בינואר 1970). ההנחה היא שהשעה היא לפי אזור הזמן UTC.

נכסים

dictionary

מילון שטוח שרירותי של צמדי מפתח/ערך. המפתחות חייבים להיות מחרוזות והערכים יכולים להיות מספרים או מחרוזות. עדיין אין תמיכה בערכים של רשימות בנכסים שהמשתמשים העלו.

מגבלות

גודל המניפסט ב-JSON

מגבלת הגודל של קובץ המניפסט בפורמט JSON היא 10MB. אם אתם צריכים להעלות הרבה קבצים, כדאי למצוא דרכים לצמצם את מספר התווים הנדרשים לתיאור מערך הנתונים. לדוגמה, אפשר להשתמש בשדה uriPrefix כדי לבטל את הצורך לספק את נתיב הקטגוריה ב-Google Cloud לכל URI ברשימה uris. אם צריך לצמצם את הגודל עוד יותר, אפשר לנסות לקצר את שמות הקבצים.

פורמט קובץ התמונה

כל קובץ תמונה חייב להיות קובץ TIFF. אם מערכת העזר לא צוינה במניפסט, הקובץ חייב להיות GeoTIFF עם מערכת עזר מוטמעת.

קובצי TIFF יכולים להיות דחוסים באמצעות DEFLATE,‏ JPEG-XL/JXL,‏ LERC,‏ LERC_DEFLATE,‏ LERC_ZSTD,‏ LZMA,‏ LZW,‏ WEBP או ZSTD.

כדי ליהנות מחוויית ההעלאה הטובה ביותר לקבצים גדולים:

  • הבחירה הטובה ביותר: ZSTD מציע איזון טוב בין מהירות לדחיסה.
  • הימנעות: LZMA יכול להיות איטי מאוד למרות דחיסה טובה.
  • קבצים לא דחוסים: הקבצים יהיו גדולים יותר וההעלאה תהיה ארוכה יותר.
  • דחיסת נתונים עם אובדן מידע (למשל, JPEG): יכול לשנות את ערכי הפיקסלים. שימוש בדחיסת נתונים ללא אובדן נתונים (לדוגמה, DEFLATE, ‏ LZMA, ‏ LZW, ‏ ZSTD) אלא אם אתם מבינים את ההשפעה הפוטנציאלית על הנתונים שלכם.