שאלות כלליות
יש לי בעיה, אני צריך עזרה!
מפרסמים שאלה לפי ההנחיות במדריך הזה, ומספקים כמה שיותר מידע (ראו את המדריך של Stack Overflow לניסוח שאלות טובות). בדרך כלל זה אומר:
שליחת קישור לסקריפט בכלי לעריכת קוד (לוחצים על הלחצן 'קבלת קישור' כדי לקבל אותו)
שיתוף נכסים שנדרשים להפעלת הסקריפט
למשימות באצווה שנכשלו, מדווח על המזהה של המשימה שנכשלה. מזהי משימות נראים כך:
4C25GIJBMB52PXTEJTF4JLGL. אפשר למצוא אותם בכרטיסייה 'משימה' בכלי לעריכת קוד. מידע נוסף
איפה אפשר לקרוא על הארכיטקטורה של Earth Engine?
אפשר לעיין במאמר הזה: Gorelick et al. 2017.
האם יש מדריכים מומלצים ל-Earth Engine שלא נוצרו על ידי Google?
אפשר לעיין בדפים EDU ומשאבי הדרכה.
יש הדרכות מומלצות לחישה מרחוק?
מומלץ לצפות בקורס החינמי הזה בנושא 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' הוא חותמת הזמן של ההטמעה, בפורמט של מיקרו-שניות מאז ראשית זמן יוניקס (Unix epoch). הנה דוגמה להמרה של חותמת הזמן של הטמעת תמונה של 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 ברמה 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 של פירמידות. לתמונות של QA/bitmask, צריך להשתמש במדיניות 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' ומבטלים את הסימון שלה.
עורך קוד
אין לי אפשרות להיכנס לכלי לעריכת קוד כי מוצגת לי בקשה להשתמש בחשבון הלא נכון.
מתנתקים, בוחרים את החשבון שרשום לשימוש ב-Earth Engine בדף 'בחירת חשבון', ואז בוחרים שוב את אותו חשבון בדף השני 'בחירת חשבון כדי להמשיך אל Earth Engine Code Editor' (הניסוח המדויק עשוי להיות שונה).
אני רוצה לצלם מסך של מפה גלובלית, אבל לא אוהב את ההטלה של מרקטור באינטרנט.
ההטלה על המפה שמשמשת בעורך הקוד היא Web Mercator ('EPSG:3857'). הוא מגדיל את הגודל של אובייקטים רחוקים מקו המשווה, כך שאזורים בקווי רוחב גבוהים נראים גדולים בהרבה ממה שהם באמת, בהשוואה לאזורים קרובים לקו המשווה. אי אפשר לשנות את ההטלה של אזור המפה ב-Code Editor, אבל אפשר 'לצייר' תמונה בהטלה שתבחרו על אזור Web Mercator באמצעות השיטה ee.Image.changeProj.
בדף ההפניה ל-API של השיטה מופיעה דוגמה להצגת DEM גלובלי במפה של עורך הקוד בהטלת רובינסון.
חשוב לציין שאפשר להשתמש בטכניקה הזו רק למטרות ויזואליזציה, כי כלי הבדיקה והשרטוט של עורך הקוד עדיין פועלים ב-Web Mercator.
הסקריפט שלי לא נשמר (Script error: Unknown commit).
אם מופיעה ההודעה Script error: Unknown commit כששומרים סקריפט, סביר להניח שהמאגר ששומרים בו לא מסונכרן.
הסיבה למצב הזה משתנה וקשה לזיהוי. כדי לפתור את הבעיה, נסו לרענן את רשימת התסריטים באמצעות הלחצן שבפינה השמאלית העליונה של הכרטיסייה 'תסריט'. אם זה לא עובד, מנסים ליצור מאגר חדש באמצעות הלחצן 'חדש' בכרטיסייה 'סקריפט' ולשמור בו את הסקריפט (יכול להיות שיהיה צורך להעביר סקריפטים למאגר החדש מהמאגר שלא מסונכרן).