אם אתם זקוקים לגמישות רבה יותר בהעלאת תמונות ל-Google Earth Engine (EE) מזו שמספקים ממשק המשתמש של Code Editor או הפקודה upload
של כלי שורת הפקודה'earthengine', תוכלו לתאר את העלאת התמונה באמצעות קובץ JSON שנקרא 'מניפסט', ולהשתמש בפקודה upload image --manifest
של כלי שורת הפקודה.
דוגמה מלאה מופיעה בnotebook הזה ב-Colab, שבו מוצגת העלאה של משבצות תמונה כנכס יחיד באמצעות מניפסט.
הגדרה חד-פעמית
- העלאות של מניפסט פועלות רק עם קבצים שנמצאים ב-Google Cloud Storage. כדי להתחיל להשתמש ב-Google Cloud Storage, צריך ליצור פרויקט ב-Google Cloud, אם עדיין אין לכם פרויקט כזה. לתשומת ליבכם: בתהליך ההגדרה צריך לציין כרטיס אשראי לחיוב. בשלב הזה, EE לא מחייבת אף אחד, אבל העברת קבצים ל-Google Cloud Storage לפני ההעלאה ל-EE כרוכה בעלות קטנה. לגבי נתונים רגילים להעלאה (עשרות או מאות ג'יגה-בייט), העלות תהיה נמוכה למדי.
- בפרויקט, מפעילים את Cloud Storage API ויוצרים קטגוריה.
- מתקינים את הלקוח של Earth Engine ל-Python. הוא כולל את כלי שורת הפקודה
earthengine
, שבו נשתמש כדי להעלות נתונים. - להעלאות אוטומטיות, מומלץ להשתמש בחשבון שירות ב-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. התרחיש הנפוץ ביותר הוא קובץ 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) אלא אם אתם מבינים את ההשפעה הפוטנציאלית על הנתונים שלכם.