שאלות כלליות
יש לי בעיה, אני צריך עזרה!
פרסום שאלה לפי ההנחיות במדריך הזה, עם כמה שיותר פרטים (ראו את המדריך של Stack Overflow לניסוח שאלות טובות). בדרך כלל זה אומר:
שליחת קישור לסקריפט בכלי לעריכת קוד (לוחצים על הלחצן 'קבלת קישור' כדי לקבל אותו)
שיתוף נכסים שנדרשים להפעלת הסקריפט
אם משימות אצווה נכשלות, מדווחים על המזהה של המשימה שנכשלה. מזהי משימות נראים כך:
4C25GIJBMB52PXTEJTF4JLGL. אפשר למצוא אותם בכרטיסייה Task (משימה) בכלי לעריכת קוד. מידע נוסף
איפה אפשר לקרוא על הארכיטקטורה של Earth Engine?
אפשר לעיין במאמר הזה: Gorelick et al. 2017.
האם יש מדריכים מומלצים ל-Earth Engine שלא נוצרו על ידי Google?
אפשר לעיין בדפים EDU וTraining Resources.
יש הדרכות מומלצות לחישה מרחוק?
מומלץ לצפות בקורס החינמי הזה בנושא EE של Ujaval Gandhi, שכולל סרטון עם מבוא לחישה מרחוק.
תכנות ב-Earth Engine
מהן שגיאות נפוצות בכתיבת קוד?
למה מופיעה השגיאה '… is not a function'?
השגיאה הזו מתרחשת כש-Earth Engine לא מצליח למצוא את השיטה שנקראה. בודקים אם הדחייה נובעת מאחת מהסיבות הנפוצות הבאות:
איות או תלות באותיות רישיות: השיטות תלויות באותיות רישיות. כדאי לבדוק את האיות באמצעות הפניית ה-API.
Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)
חסרים המרות סוגים: ערכים שמוחזרים מפונקציות כמו .get() הם מופעים כלליים של ee.ComputedObject וצריך להמיר אותם באופן מפורש. אפשר לעיין במאמר בנושא המרת סוגים של אובייקטים לא ידועים.
Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)
שימוש בשיטות של לקוח ושרת יחד: מוודאים שלא משתמשים בשיטות רגילות של JavaScript או Python (כמו .push() או .append()) באובייקטים של Earth Engine. מידע נוסף זמין במאמר איך להימנע משימוש בפונקציות של לקוח ושרת יחד.
Error: list.push(4) or list.append(4) -> Correct: list.add(4)
שיטות שלא זמינות: אם האובייקט מוקלד בצורה תקינה והשיטה קיימת במסמכי התיעוד או פעלה בעבר אבל עכשיו היא נכשלת, צריך לדווח על באג.
למה אי אפשר להשתמש בפעולות מתמטיות בסיסיות כמו ee.Image("image") * 2?
ב-EE, אסור לערבב אובייקטים או פעולות בצד השרת ובצד הלקוח. כל הפעולות על אובייקטים של EE מתבצעות בצד השרת. חישובים בצד הלקוח לא יפעלו כמו שאתם רוצים. בדף הזה מופיעים פרטים נוספים.
איך משתמשים בלולאות for או בהצהרות if/else?
התכנות ב-Earth Engine מתבצע באמצעות שפה פונקציונלית, ולכן לולאות ופעולות מותנות צריכות להיות מבוטאות באמצעות מושגים מקבילים כמו map או filter. פרטים נוספים זמינים בדף הזה.
איך מציגים תוויות טקסט בתמונה או בסרטון?
אין תמיכה מובנית בתוויות טקסט, אבל אפשר:
- משתמשים בחבילת JS של צד שלישי. לדוגמה
- משתמשים בחבילת Python של צד שלישי geemap.
- שימוש ב-QGIS להוספת תמונות EE באמצעות הפלאגין EE QGIS
האם אפשר להשתמש בפלטות צבעים סטנדרטיות?
משתמשים בחבילת JS של צד שלישי, ee-palettes.
איך יוצרים אתר משלי שמשתמש ב-Earth Engine?
משתמשים ב-Earth Engine Apps לאפליקציות בסיסיות. במקרים מורכבים יותר, אפשר ליצור אפליקציות App Engine שמבוססות על EE.
איך מזהי מפות פועלים?
מזהי מפות (שנקראים mapid בכל ממשק ה-API) הם מפתחות שמאפשרים ללקוחות לאחזר משבצות של מפות. כל מזהה הוא גיבוב שנוצר על ידי העברת ביטוי של תמונה לנקודת הקצה getMapId. המזהים שמתקבלים הם מפתחות שמפנים גם אל ביטוי התמונה וגם אל פרטי הכניסה של המשתמש, שישמשו ליצירת משבצות בשלב מאוחר יותר.
כשמבקשים משבצות של מפה, צריך לציין את המיקום של המשבצת (x, y, zoom) וגם את mapid (המפתח לתמונה ולפרטי הכניסה). אפשר להשתמש באותו מזהה שוב ושוב כדי לטעון משבצות רבות של מפה. אין מגבלות על השימוש החוזר במפתחות mapid, אבל הם פוקעים אחרי כמה שעות. אנחנו לא מפרסמים מסגרות זמן ספציפיות לגבי משך הזמן שהם תקפים, אבל כל קוד שתכתבו צריך להיות עמיד לפקיעת תוקף של המזהה.
כדי ליצור את המזהים האלה, צריך לאחסן כמות קטנה של נתונים ולאמת את פרטי הכניסה, ולכן מומלץ לעשות בהם שימוש חוזר כמה שיותר זמן. אין מכסת API שמשויכת ספציפית לנקודת הקצה getMapId, אבל כל תהליך עבודה שכולל יצירה של אובייקטים מסוג mapid בקצב שקרוב לקצב של אחזור משבצות, כנראה עושה משהו לא נכון. ל-Earth Engine אין נקודת קצה של API להסרה, לרישום או לניהול של המזהים האלה, כי הם משאבים זמניים.
למה הפונקציה ee.Algorithms.If() מדפיסה גם את המקרה של true וגם את המקרה של false?
function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());
האלגוריתם If() פועל בדיוק כמו כל אלגוריתם אחר ב-Earth Engine, כלומר כל הארגומנטים שלו צריכים לעבור הערכה לפני שהאלגוריתם עצמו יכול לפעול.
האלגוריתם מקבל את התוצאות של trueCase ושל falseCase, ואז בוחר ומחזיר אחת מהן על סמך הארגומנט condition, אבל שני הנתיבים צריכים להתבצע כדי שהערכים האלה יועברו לאלגוריתם מלכתחילה.
מוצגת לי השגיאה 'גודל המטען הייעודי (payload) של הבקשה חורג מהמגבלה'
ניסיתם לשלוח ל-Earth Engine בקשה גדולה מאוד. הבעיה הזו מתרחשת בדרך כלל כשהקוד משתמש בהרבה לולאות 'for' בצד הלקוח או כשהוא יוצר FeatureCollection מתוך הרבה אובייקטים של גיאומטריה. במקרה השני, במקום ליצור את הצורות האלה בסקריפט, צריך ליצור קובץ CSV שמכיל אותן ולהעלות אותו כנכס של טבלה.
מה ההבדל בין ee.Image.clip() לבין ee.Filter.bounds()?
אפשר לעיין בשרשור הזה ב-GIS Stack Exchange.
הפונקציה ee.Image.clip() מסתירה פיקסלים שלא חותכים ee.Geometry או ee.Feature נתונים שצוינו, כך שהם שקופים בהדמיות ומוחרגים בחישובים. אפשר לחשוב על זה כעל חיתוך של פיקסלים מתמונה.
הפונקציה ee.Filter.bounds() מסננת אובייקטים ee.Image מתוך ee.ImageCollection על סמך החיתוך של התמונה עם ee.Geometry או ee.Feature. היא משמשת להגבלת היקף הניתוח לתמונות שחותכות אזור נתון, וכך עוזרת לבצע אופטימיזציה של ביטויים.
איך ממירים פיקסלים של תמונה לאוספים של תכונות, עם תכונה אחת לכל פיקסל?
משתמשים בפונקציה ee.Image.sample(). דוגמאות לשימוש מופיעות בדף העזרה בנושא API של הפונקציה.
מה ההבדל בין ee.ImageCollection.merge() לבין ee.ImageCollection.combine()?
הפונקציה ee.ImageCollection.merge() ממזגת את כל התמונות משני אוספים לאוסף אחד, בלי קשר לשאלה אם לתמונות המתאימות יש רצועות חופפות, מטא-נתונים, CRS או קנה מידה. הוא איחוד של שני אוספים. בשיטה combine(), המערכת משלבת את הפסים של תמונות תואמות משני אוספים לאוסף אחד. תמונות תואמות חולקות את אותו מזהה (מאפיין system:index). זהו צירוף פנימי של שני אוספים על סמך מזהה התמונה, שבו רצועות מתמונות תואמות משולבות. לחיפוש תמונות תואמות, רצועות מהתמונה המשנית מצורפות לתמונה הראשית (אפשרות הדריסה היא אופציונלית). אם אין תמונות תואמות, מוחזר אוסף ריק.
איך מסננים אוספי תמונות לפי כמה טווחי תאריכים?
אפשר לעיין בשרשור הזה ב-GIS Stack Exchange.
אפשר merge() לשלב כמה אוספים או להשתמש ב-ee.Filter.or().
איך יוצרים תיבת תוחמת מסביב לנקודה נתונה?
// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);
// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
var box = feature.buffer(30000).bounds();
return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);
Data Catalog
תוכל להוסיף את מערך הנתונים X?
שולחים באג בבקשה למערך נתונים לפי המדריך לבקשות למערכי נתונים.
אפשר גם להעלות נתונים לתיקיית הבית של Earth Engine. כדאי לעיין במאמרים בנושא ייבוא נתוני רסטר וייבוא נתונים בטבלה.
קבוצת נתונים קיימת קיבלה גרסה חדשה
שולחים בקשה לתיקון באג במערך הנתונים בהתאם למדריך לבקשות של מערכי נתונים, ומציינים שאתם מבקשים לעדכן את מערך הנתונים.
מערך נתונים קיים לא מתעדכן או שחסרים בו נכסים
לפני שמדווחים על בעיה, כדאי לוודא, אם אפשר, שהנכסים שנבחרו באמת קיימים באתר של ספק קבוצת הנתונים. פרטים נוספים זמינים במדריך בנושא תמונות חסרות.
אם אתם מחפשים נכס באמצעות סינון של ImageCollection, ודאו שהמסננים לא מגבילים מדי.
חשוב לשים לב במיוחד:
נתוני Sentinel-2 SR (רמה 2) לא נוצרו על ידי ESA עבור סצנות מוקדמות ברמה 1.
ל-Landsat אין כיסוי עולמי לפני שנת 2000.
יש ערכים שגויים במערך נתונים קיים
מפרסמים בפורום המפתחים. כוללים סקריפט שמבצע זום לרזולוציה המקורית של הנכס ומאפשר לראות בבירור אילו ערכים שגויים. מסבירים איפה בדיוק ראיתם את הערך החלופי.
איפה עוד אפשר לשאול על מערכי נתונים?
לשאלות לגבי מערכי נתונים של NASA, אפשר להיעזר בפורום NASA Earth Data.
אם יש לכם שאלות לגבי הפעולה של ארגזי הכלים בקבוצות הנתונים של Copernicus, תוכלו להיכנס לפורומים של S1, S2 ו-S3.
מה גודל הקטלוג של EE?
נכון לאוקטובר 2023, הקטלוג מכיל יותר מ-1,000 מערכי נתונים. הגודל שלו בדיסק הוא מעל 90 פטה-בייט (אחרי שקלול של דחיסה ללא אובדן נתונים).
באיזו תדירות מתעדכנים הנתונים ב-EE?
בדרך כלל, כל מערכי הנתונים שמתעדכנים מתעדכנים לפחות פעם ביום (אבל לא בכל מערכי הנתונים האלה יש נתונים חדשים בכל יום). חלק ממערכי הנתונים מתעדכנים כמה פעמים ביום. עם זאת, אין מדיניות שמבטיחה את הזמינות של הנכסים העדכניים ביותר בקטלוג.
איך אפשר לראות את התוכן של קטלוג EE באופן פרוגרמטי?
רשימת מערכי הנתונים מיוצאת בפורמט STAC אל קטגוריה של Google Cloud Storage gs://earthengine-stac.
קובץ הכניסה הוא catalog.json.
האם אפשר להשתמש בנתונים או בתמונות של מפות Google לצורך ניתוח?
Google לא מעניקה רישיון לנתוני מפת בסיס לצורך ניתוח, ולא מוכרת אותם.
איך אפשר לראות את התאריך שבו נכס נטען למערכת?
מאפיין הנכס 'system:version' הוא חותמת הזמן של ההטמעה, בפורמט של מיקרו-שניות מאז ראשית זמן יוניקס. הנה דוגמה להמרה של חותמת הזמן של הטמעה של תמונה מ-Landsat לפורמט קריא.
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));
האם קטלוג Earth Engine כולל מטא-נתונים בפורמט JSON-LD?
כן, מטא-נתונים בפורמט JSON-LD מוטמעים בדפי ה-HTML של הקטלוג. לדוגמה, בדף Sentinel-2 מופיע הבלוק הבא:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Earth Engine Data Catalog",
"item": "https://developers.google.com/earth-engine/datasets"
},{
"@type": "ListItem",
"position": 2,
"name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
"item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
}]
}
</script>
Landsat
איך האלגוריתם simpleComposite מיושם?
ההטמעה בצד השרת מקבילה לקוד ה-JavaScript הזה.
איך אפשר ליצור תמונות מורכבות ללא עננים מנתוני השתקפות פני השטח של Landsat?
לנתוני Landsat Level 2 (החזרת אור מפני השטח) יש כמה רצועות איכות שאפשר להשתמש בהן כדי להסתיר עננים וארטיפקטים לא רצויים אחרים בתמונה. דוגמה לשימוש ברצועות האלה לעיבוד תמונות Landsat 8 SR וליצירת קומפוזיציה חציונית ללא עננים מופיעה בפוסט הזה ב-GIS Stack Exchange. אותו הליך משמש ליצירת קומפוזיציה ללא עננים לשימוש בדוגמאות של סיווג בפיקוח במדריך למפתחים.
האם צריך לבצע הרמוניזציה של מידת ההחזרה של פני השטח ב-Landsat בין חיישנים שונים?
Roy et al., 2016 כלל ניתוח של הבדלים בהחזרת אור בין Landsat 7-8 TOA לבין החזרת אור מפני השטח. הם פרסמו את המקדמים של OLS ו-RMA כדי שהקוראים יוכלו להמיר את ערכי ההחזרה של נתוני חיישן אחד לנתונים של חיישן אחר. בשורה האחרונה של המאמר נכתב: "למרות שההבדלים בין החיישנים קטנים למדי, הם עשויים להשפיע באופן משמעותי בהתאם לאפליקציה של נתוני Landsat". עם זאת, הניתוח הזה התבסס על נתונים שנאספו לפני ההטמעה.
השיפורים שבוצעו במהלך העיבוד מחדש של נתונים מאיסוף 1 ומאיסוף 2 עשויים להשפיע על הקשר בין החיישנים, אבל למיטב ידיעתנו, לא בוצעו ניתוחים דומים לניתוחים של Roy et al. (2016) לגבי נתונים מאיסוף 1 או מאיסוף 2. למרות שלא בוצע ניתוח רשמי, נראה שיש הסכמה כללית בקרב משתמשי Landsat משפיעים שלא נדרש תיקון לנתונים של Collection 2, Level 2 (החזרת אור מהמשטח). לדוגמה, בתשובה לשאלה לגבי הצורך בהרמוניזציה של Collection 2, Level 2, מייק וולדר (Mike Wulder) מצוות המדע של Landsat ציין שבהתאם לאופי היישום הרלוונטי (כולל מיפוי של כיסוי הקרקע וזיהוי שינויים), מוצרי ההחזר של Collection 2 מתאימים ואמינים מאוד, ואין צורך בהתאמה בין חיישנים שונים.
איך אפשר להוסיף מסכה לעננים ולצללים של עננים בתמונות MSS?
מודול msslib של צד שלישי בכלי לעריכת קוד JavaScript כולל הטמעה של אלגוריתם MSScvm, וגם פונקציות מועילות אחרות לבדיקה ולהכנה של נתוני MSS.
ניהול נתונים
מי הבעלים של הנתונים שאני מעלה?
בהתאם לתנאים ולהגבלות של Earth Engine, הלקוחות הם הבעלים של הנתונים שהם מעלים ל-Earth Engine.
לא הצלחתי להעלות נתונים.
בודקים את הסטטוס של משימת ההעלאה בחלונית 'משימות' בפינה השמאלית העליונה של כלי עריכת הקוד. אפשר גם לעבור אל דף המשימות הייעודי.
אם אין משימה, כנראה שניסית להעלות את הקובץ דרך עורך הקוד, אבל בגלל בעיה ברשת ההעלאה של הקובץ לא הסתיימה, ולכן המשימה לא נוצרה. מנסים להשתמש בדפדפן אחר או במחשב אחר.
אם יש משימה שנכשלה, בודקים את השגיאה שמוצגת. אם לא מוצגת הודעת שגיאה ספציפית, קודם צריך לוודא שהקובץ לא פגום. לשם כך, מריצים את הפקודה gdalinfo לקובצי רסטר או את הפקודה ogr2ogr לקובצי וקטור.
הפקודות האלה ינסו לקרוא את כל הנתונים מקובצי המקור ולהציג שגיאות אם הקבצים פגומים.
קריאה לדוגמה של gdalinfo:
gdalinfo -mm -stats -checksum file.tif
דוגמה לקריאה ל-ogr2ogr שתמיר את in.shp ל-out.csv:
ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp
אם הקובץ נראה תקין, מפרסמים את מזהה המשימה שנכשלה כטקסט (לא כצילום מסך) ברשימת התפוצה למפתחים.
מזהי המשימות הם בפורמט הבא: 4C25GIJBMB52PXTEJTF4JLGL. אם אפשר, מגדירים את קובץ המקור כקריא באופן ציבורי. אם הקובץ פרטי, צריך לשתף אותו רק עם earthengine@google.com אם רוצים שצוות Earth Engine יבדוק אותו. אם אי אפשר לשתף את קובץ המקור, צריך לפחות לספק את הפלט של gdalinfo -mm -stats -checksum.
אם Earth Engine לא תומך בהטלה מסוימת, תצטרכו להטיל מחדש את הנתונים לפני ההעלאה באמצעות gdalwarp, למשל.
איך מעלים קובץ בפורמט NetCDF או בפורמט רסטר אחר שלא נתמך?
אפשר להעלות ל-Earth Engine רק קובצי GeoTIFF. אפשר להמיר פורמטים אחרים שתואמים ל-GDAL לפורמטים של GeoTIFF באמצעות gdal_translate. דוגמה:
gdal_translate -co COMPRESS=DEFLATE file.nc file.tif
שימו לב: חלק מקובצי NetCDF או HDF מורכבים מכמה מערכי נתונים משניים שאפשר לגלות באמצעות gdalinfo. הפקודה gdal_translate במקרה הזה תיראה כך (שימו לב שהנתיב נמצא בין המירכאות הכפולות):
gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif
לפעמים קבצי NetCDF לא כוללים היטל ש-GDAL מזהה. במקרה כזה, צריך להגדיר את ההטלה ואת ההיקף המרחבי בשורת הפקודה gdal_translate. דוגמה:
gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid
באילו אלגוריתמים לדחיסת נתונים אפשר להשתמש בקובצי GeoTIFF שהועלו?
להעלאה, אפשר לדחוס קובצי GeoTIFF באמצעות DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP או ZSTD. לקריאה בזמן אמת של קובצי COG, אפשר להשתמש ב-DEFLATE, JPEG, LZW או ZSTD. ZSTD היא בחירה טובה באופן כללי, כי היא מאפשרת לבצע דקומפרסיה במהירות ועדיין מספקת דחיסה טובה של רוב התמונות.
כדי להחיל דחיסת ZSTD כשמשתמשים ב-gdal_translate, מוסיפים את האפשרויות האלה. אם הנתונים כוללים ערכים עם נקודה עשרונית, משנים את PREDICTOR ל-3.
gdal_translate in.tif out.tif \
-co COPY_SRC_OVERVIEWS=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=ZSTD \
-co PREDICTOR=2 \
-co ZSTD_LEVEL=22 \
-co INTERLEAVE=BAND \
-co NUM_THREADS=ALL_CPUS
הטמעת הנתונים בפורמט ראסטר שלי פועלת כבר כמה ימים ולא הסתיימה.
בעזרת gdalinfo, בודקים אם הקובץ כולל את האפשרות הבאה של GDAL:
INTERLEAVE=PIXEL. יכול להיות שייקח הרבה זמן עד שהמערכת תסיים לעבד קבצים עם האפשרות הזו והרבה רצועות, כי הפריסה של קבצים כאלה מאטה מאוד את הקריאה.
כדאי לנסות להמיר קבצים כאלה לפורמט band-interleaved לפני ההעלאה:
gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif
הנתונים הרסטריים שהעליתי לא תואמים למפת הבסיס.
אם הנתונים מוסטים מעט ממפת הבסיס, כנראה שההיטל כולל נתון שגוי (הנחה לגבי צורת כדור הארץ). זה קורה לרוב עם ההיטל הסינוסואידי שלא ניתן לקודד אותו באופן מלא במטא-נתונים של GDAL. אם אתם יודעים מה צריך להיות היטל היעד (למשל, SR-ORG:6974 לקבצים שמשתמשים בהיטל סינוסואידי של MODIS), צריך להגדיר את הדגל --crs במהלך העלאה משורת הפקודה או את השדה crs של מניפסט ההעלאה.
אם הנתונים נראים מעוותים מאוד או במיקום שגוי לחלוטין, סביר להניח שההטלה או ההעתקה האפינית שגויות.
התמונה הדיגיטלית שלי מוצגת רק מעל חצי הכדור המזרחי.
סביר להניח שהעליתם רסטר גלובלי שכולל את טווח קווי האורך [0, 360]. עם זאת, ב-Earth Engine נדרש שרסטרים יהיו בטווח [-180, 180]. החלפה בין החלקים השמאלי והימני של רסטר לפני ההטמעה. הצעות נוספות ב-GIS Stack Exchange
למה תמונה שסווגה ונבלעה נראית מנוקדת?
סביר להניח שהשתמשתם בMEAN
מדיניות ברירת המחדל של פירמידה.
לתמונות סיווג, צריך להשתמש במדיניות הפירמידה MODE. לתמונות של בקרת איכות או מסכות סיביות, צריך להשתמש במדיניות הפירמידה SAMPLE.
מופיעה השגיאה הבאה: אין ערך נתונים. אי אפשר להחיל את הערך -128.0 על פס מספר 0 מסוג Short<0, 255>.
GDAL לא יכול לטפל בפסים של בייט יחיד כאילו הם מכילים מספרים שלמים עם סימן, ולכן הוא קורא פסים כאלה כמספרים שלמים ללא סימן. זה יגרום לקונפליקט עם ערכים שליליים של 'אין נתונים'.
אם הערכים הם למעשה מספרים שלמים עם סימן, צריך להשתמש בהעלאת מניפסט ולהוסיף את השורה הבאה לקטע של ערכת המשבצות שמכיל את הקובץ: data_type: "INT8"
אם הערכים הם מספרים שלמים לא מסומנים, בקובץ יש ערך nodata שגוי. אפשר לשנות את הערך הזה בהעלאה לערך הנתונים הנכון (או לערך שלא מופיע אף פעם, אם קיים כזה). אפשר גם להשתמש ב-gdal_translate -a_nodata כדי לשנות את הערך של nodata או ב-gdal_edit.py -unsetnodata כדי להסיר אותו.
איך מעלים קובץ בפורמט GeoJSON או בפורמט וקטורי אחר שלא נתמך?
אפשר להשתמש ב-ogr2ogr כדי לתרגם פורמטים שתואמים ל-OGR ל-CSV או ל-SHP. דוגמה:
or2ogr -f "ESRI Shapefile" file.shp file.kml
חשוב לזכור שבהעלאות של קובצי CSV, עמודת הגיאומטריה יכולה להכיל GeoJSON.
אני רוצה להעלות נתונים באמצעות Python, או להעלות הרבה קבצים בבת אחת.
משתמשים בהעלאה דרך שורת הפקודה. כדי להעלות קבצים כאלה, צריך קודם להציב את קובצי המקור בקטגוריה ב-GCS (Google Cloud Storage). השימוש ב-GCS לא כרוך בתשלום אם לא חורגים מהמגבלות של התוכנית בחינם – אפשר לעיין בדף התמחור.
אני רוצה להעלות פסיפס רסטר גדול שמפוצל להרבה משבצות.
אם לכל הקבצים יש אותה הקרנה ואותו גודל פיקסל, פשוט מעלים אותם יחד לאותו נכס והם יצורפו אוטומטית.
אם לקבצים יש הקרנות שונות או גדלי פיקסלים שונים, אי אפשר ליצור מהם פסיפס של נכס רסטר יחיד. במקום זאת, צריך להעלות כל משבצת כנכס נפרד לאותו קובץ ImageCollection שאפשר ליצור ממנו פסיפס באמצעות ImageCollection.mosaic().
ניסיתי להעלות פסיפס וקיבלתי שגיאות לגבי משבצות לא תואמות.
למשבצות של פסיפסים של רסטר ב-Earth Engine צריכה להיות אותה הקרנה ואותו גודל פיקסל. בנוסף, המשבצות צריכות להיות מיושרות בדיוק לגבולות הפיקסלים.
ניסיתי להעלות קובץ מקטגוריית GCS, אבל Earth Engine לא מוצא אותו.
יכול להיות שהשתמשתם בחשבונות Google שונים להעלאה ל-GCS ולחיבור ל-Earth Engine. מוודאים שהקובץ ב-GCS ניתן לקריאה על ידי החשבון שבו אתם משתמשים כדי להתחבר ל-Earth Engine. אם הכניסה לכמה חשבונות בדפדפן גורמת לבלבול, כדאי להתחבר ל-Earth Engine בחלון דפדפן במצב פרטי.
אני רוצה לייצא הרבה נכסים בבת אחת.
צריך לייצא כל תמונה בנפרד.
אני רוצה להעביר או למחוק Folder או ImageCollection באמצעות פקודה אחת.
קודם צריך להעביר או למחוק כל נכס, ואז להעביר או למחוק את תיקיית האב או את האוסף. אם יש הרבה נכסי צאצא, כדאי לכתוב לולאה ב-Shell או ב-Python כדי לחזור עליהם שוב ושוב.
אני רוצה לגשת ישירות לנתוני Earth Engine מחוץ ל-EE.
ל-QGIS יש פלאגין Earth Engine.
ל-GDAL יש Earth Engine driver.
מערכות אחרות יכולות להשתמש ב-API בארכיטקטורת REST של EE.
אני רוצה לעדכן חלק מנכס Earth Engine בלי לבצע הטמעה מחדש של הנכס כולו.
אי אפשר לעדכן נתוני רסטר או וקטור שהועלו ל-EE. אפשר לעדכן רק מאפיינים של מטא-נתונים של נכסים.
הגישה לחשבון שלי נחסמת. מה עושים עם הנכסים?
אם המדיניות של החשבון המקורי מאפשרת העברת נתונים, אפשר לשתף את הנכסים עם חשבון אחר ואז להעתיק אותם כך שהבעלות עליהם תהיה של החשבון החדש. אם יש הרבה נכסים להעברה, אפשר להשתמש בכלי להעתקה משורת הפקודה.
אם חשבון נמחק, אי אפשר יותר לגשת לנכסים שבבעלותו.
התמונה שייצאתי נמצאת במקום הלא נכון.
במקרים מסוימים, כמו בהטלות סינוסואידליות או קוניות, קובצי GeoTIFF לא יכולים לאחסן את כל פרמטרים ההטלה הנדרשים. התוצאה היא קובץ מיוצא שמופיע במקום הלא נכון כשמציגים אותו בכלי GIS למחשב או כשמייבאים אותו מחדש ל-EE.
כדי לפתור את הבעיה, צריך לציין פרמטר crs לייצוא שידוע שהוא פועל היטב עם קובצי GeoTIFF. לדוגמה, אפשר להשתמש בקוד EPSG לאזור UTM שמכיל את האזור שמעניין אתכם.
באיזה מיקום של קטגוריה ב-Cloud Storage כדאי להשתמש כדי לאחסן נכסי COG?
התשובה תלויה במה שאתם מנסים לבצע אופטימיזציה עבורו. אם אתם מבצעים אופטימיזציה לגישה לחישובים עם זמן אחזור נמוך, המיקומים הכי טובים של דלי GCS לאחסון נכסי COG הם US-CENTRAL*. מידע על שיקולים נוספים זמין בדף מיקומי קטגוריות.
המאפיינים שהגדרתי לא נשמרים בנכסים של אוסף התכונות שייצאתי.
אף אחת מהפונקציות Export.table.* לא שומרת על מאפיינים ברמת הטבלה בפלט. עבור הרבה פורמטים של פלט (למשל CSV, GeoJSON), אין תמיכה במטא-נתונים כאלה. הפונקציה Export.table.toAsset יכולה לתמוך במאפיינים ברמת הטבלה, אבל היא לא עושה זאת בשלב הזה.
טבלאות שמיוצאות ל-Drive בפורמט CSV מומרות לפורמט XLSX.
בהתאם להגדרות של Google Drive, טבלאות CSV שמייצאים מ-Earth Engine יכולות להפוך לקובצי XLSX עם השפעות לא רצויות, כמו המרות של סוגי נתונים. כדי לשנות את ההתנהגות של ייצואים עתידיים, פועלים לפי השלבים הבאים.
- ב-Google Drive באינטרנט, לוחצים על סמל גלגל השיניים של ההגדרות בפינה השמאלית העליונה.
- לוחצים על 'הגדרות'.
- גוללים אל 'המרת קבצים שהועלו לפורמט של עורך Google Docs' ומבטלים את הסימון של התיבה.
Code Editor
אין לי אפשרות להיכנס לכלי לעריכת קוד כי מוצגת לי בקשה להשתמש בחשבון הלא נכון.
מתנתקים, בוחרים את החשבון שרשום לשימוש ב-Earth Engine בדף 'בחירת חשבון', ואז בוחרים שוב את אותו חשבון בדף השני 'בחירת חשבון כדי להמשיך אל Earth Engine Code Editor' (הניסוח המדויק עשוי להיות שונה).
אני רוצה לצלם מסך של מפה גלובלית, אבל לא אוהב את ההטלה של מרקטור.
ההטלה של המפה שמשמשת בעורך הקוד היא Web Mercator ('EPSG:3857'). ההטלה הזו מגדילה את הגודל של אובייקטים שרחוקים מקו המשווה, ולכן אזורים בקווי רוחב גבוהים נראים גדולים בהרבה ממה שהם באמת, בהשוואה לאזורים שקרובים לקו המשווה. אי אפשר לשנות את ההטלה של קנבס המפה בעורך הקוד, אבל אפשר 'לצייר' תמונה בהטלה שתבחרו בקנבס Web Mercator באמצעות השיטה ee.Image.changeProj. בדף הפניה ל-API של השיטה יש דוגמה להצגת DEM גלובלי במפה של עורך הקוד בהטלת רובינסון. שימו לב שאפשר להשתמש בטכניקה הזו רק למטרות ויזואליזציה, כי כלי הבדיקה והציור של עורך הקוד עדיין פועלים ב-Web Mercator.
הסקריפט שלי לא נשמר (Script error: Unknown commit).
אם מקבלים הודעה Script error: Unknown commit כששומרים סקריפט, סביר להניח שהמאגר ששומרים בו לא מסונכרן. הסיבה למצב הזה משתנה וקשה לזיהוי. כדי לפתור את הבעיה, מנסים לרענן את רשימת הסקריפטים באמצעות הלחצן בפינה השמאלית העליונה של הכרטיסייה Script. אם זה לא עוזר, מנסים ליצור מאגר חדש באמצעות הלחצן New בכרטיסייה Script ולשמור בו את הסקריפט (יכול להיות שיהיה צורך להעביר סקריפטים למאגר החדש מהמאגר שלא מסונכרן).
למה אני רואה שוב ושוב שגיאות 400 בעורך הקוד?
אם מופיעות שוב ושוב שגיאות 400 בכלי לעריכת קוד, עוברים אל https://myaccount.google.com/connections, מחפשים את האפשרות 'כלי לעריכת קוד של Earth Engine' ברשימת האפליקציות והשירותים, בוחרים אותה, ואז בוחרים באפשרות 'מחיקת כל החיבורים הקיימים עם הכלי לעריכת קוד של Earth Engine' ומאשרים. לאחר מכן פותחים את הכלי לעריכת קוד ומבצעים אימות מחדש.