• דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

חילוץ נתונים מטאורלוגיים מקובץ geoTiff

מתוזמן נעוץ נעול הועבר תכנות
8 פוסטים 4 כותבים 177 צפיות
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • D מנותק
    D מנותק
    davidnead
    כתב ב נערך לאחרונה על ידי
    #1

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

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

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

    בדר"כ קריאת המידע נעשית באמצעות כלים מוכנים (עם UI) שמשמשים אנשי מקצוע שעוסקים בזה. אבל אני כולה צריך קוד, פונקציית JS או פייתון פשוטה שתעשה לי את העבודה.
    למזלי הטוב, יצא לי בעבר להתעסק עם קוד מוכן שעשה משהו דומה, נתונים טיפוגרפיים על כל כדור הארץ. הוא השתמש בספריה GDAL שיש לה חבילה בפייתון וגם גרסה מקבילה בNODEJS.

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

    //קריאת הקובץ
      const file = `E:\\World Climate\\\\wc2.1_30s_tavg_01.tif`;
      const dataset = gdal.open(file);
    
    //חילוץ נתונים של גובה ורוחב התמונה (או הרסטר או השד יודע מה) מהשדה
    dataset.geoTransform
    
    //קריאת הפיקסלים:
      const pxs = ds.bands.get(1).pixels.read(0, 0, ds.rasterSize.x, 14);
    

    טוב, פה נתקעתי פעם ראשונה. רציתי לקרוא את כל הפיקסלים, ולכן בהתחלה העברתי פרמטרים (0, 0, ds.rasterSize.x, ds.rasterSize.y) כלומר את כל הגובה והרוחב החל מהיסט 0 (הפינה). אבל משום מה זה החזיר שגיאה. מתברר שלמרות הגודל לכאורה של התמונה, הוא מסוגל לקרוא רק את ה14 שורות הראשונות (בדקתי, דוקא שורות אלו).

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

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

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

    nigunN OdedDvirO 2 תגובות תגובה אחרונה
    0
  • nigunN מנותק
    nigunN מנותק
    nigun
    השיב לdavidnead ב נערך לאחרונה על ידי nigun
    #2

    @davidnead
    לא נפנה אותך לגוגל
    רק נעתיק לכאן את התוצאות.

    כאן נראה שיש הסברים קצת יותר מורחבים מה מבנה הקובץ
    https://worldclim.org/data/v1.4/formats.html
    כאן יש דוגמה לחילוץ של המידע בשפת R אולי זה יתן לך כיוון
    https://gist.github.com/kgturner/6643334

    כל זה לקבצים בגרסה 1 של worldclim לא יודע איפה התיעוד של גרסה 2.

    עריכה: המשכתי בכיוון הזה וחיפשתי בגיטהאב עוד דוגמאות קוד לניתוח הקבצים של worldclim, יש שם עוד כמה שנראה שמתאימים לגרסה 2.
    למשל בזה מוזכר בפירוש גרסה 2.1
    https://github.com/Chilipp/latlon-utils

    יש עוד פרוייקטים מהשנים האחרונות שכנראה גם מתאימים
    צריך לעבור ולהבין מה מתאים, אמנם הרוב כתוב בR אבל אולי מההערות אפשר להבין משהו
    https://github.com/search?o=desc&q=worldclim&s=updated&type=Repositories

    מייל: nigun@duck.com

    D תגובה 1 תגובה אחרונה
    1
  • OdedDvirO מנותק
    OdedDvirO מנותק
    OdedDvir
    השיב לdavidnead ב נערך לאחרונה על ידי
    #3

    @davidnead אמר בחילוץ נתונים מטאורלוגיים מקובץ geoTiff:

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

    הואיל ולא קיבלת מענה מדויק לבעיה, יתכן וכיוון אחר יעזור לך.
    אם אתה לא נעול דווקא על המאגר של worldclim, אולי תבדוק את ה-API של OpenWeather. הוא נותן בחינם 1000 בקשות ליום.

    D תגובה 1 תגובה אחרונה
    2
  • D מנותק
    D מנותק
    davidnead
    השיב לnigun ב נערך לאחרונה על ידי
    #4

    @nigun אמר בחילוץ נתונים מטאורלוגיים מקובץ geoTiff:

    @davidnead
    לא נפנה אותך לגוגל
    רק נעתיק לכאן את התוצאות.

    כאן נראה שיש הסברים קצת יותר מורחבים מה מבנה הקובץ
    https://worldclim.org/data/v1.4/formats.html
    כאן יש דוגמה לחילוץ של המידע בשפת R אולי זה יתן לך כיוון
    https://gist.github.com/kgturner/6643334

    כל זה לקבצים בגרסה 1 של worldclim לא יודע איפה התיעוד של גרסה 2.

    עריכה: המשכתי בכיוון הזה וחיפשתי בגיטהאב עוד דוגמאות קוד לניתוח הקבצים של worldclim, יש שם עוד כמה שנראה שמתאימים לגרסה 2.
    למשל בזה מוזכר בפירוש גרסה 2.1
    https://github.com/Chilipp/latlon-utils

    יש עוד פרוייקטים מהשנים האחרונות שכנראה גם מתאימים
    צריך לעבור ולהבין מה מתאים, אמנם הרוב כתוב בR אבל אולי מההערות אפשר להבין משהו
    https://github.com/search?o=desc&q=worldclim&s=updated&type=Repositories

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

    אמנם יש כן קישור אחד שנתת (לפייתון) שלא ראיתי, ואנסה לראות אם אני יכול ללמוד ממנו משהו.
    תודה!

    nigunN תגובה 1 תגובה אחרונה
    0
  • D מנותק
    D מנותק
    davidnead
    השיב לOdedDvir ב נערך לאחרונה על ידי
    #5

    @OdedDvir אמר בחילוץ נתונים מטאורלוגיים מקובץ geoTiff:

    @davidnead אמר בחילוץ נתונים מטאורלוגיים מקובץ geoTiff:

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

    הואיל ולא קיבלת מענה מדויק לבעיה, יתכן וכיוון אחר יעזור לך.
    אם אתה לא נעול דווקא על המאגר של worldclim, אולי תבדוק את ה-API של OpenWeather. הוא נותן בחינם 1000 בקשות ליום.

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

    dovidD תגובה 1 תגובה אחרונה
    0
  • dovidD מחובר
    dovidD מחובר
    dovid ניהול
    השיב לdavidnead ב נערך לאחרונה על ידי
    #6

    @davidnead יש מצב שלא בדקת ספריות אחרות חות מgdal?
    עברת פה על זה
    https://www.npmjs.com/search?ranking=popularity&q=geoTiff
    הספריה הפופולרית היא עם 70 אלף הורדות שבועיות
    https://www.npmjs.com/package/geotiff

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

    אפשר ליצור קשר dovid@tchumim.com

    D תגובה 1 תגובה אחרונה
    1
  • D מנותק
    D מנותק
    davidnead
    השיב לdovid ב נערך לאחרונה על ידי
    #7

    @dovid אמר בחילוץ נתונים מטאורלוגיים מקובץ geoTiff:

    @davidnead יש מצב שלא בדקת ספריות אחרות חות מgdal?
    עברת פה על זה
    https://www.npmjs.com/search?ranking=popularity&q=geoTiff
    הספריה הפופולרית היא עם 70 אלף הורדות שבועיות
    https://www.npmjs.com/package/geotiff

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

    בחנתי את הספריה הנ"ל.
    הבעיה שלי משולבת מזה שיש לי מעט מאוד התמצאות במושגים הרלוונטיים, כך שגם אם אני מתקרב אולי לפתרון יתכן שאני לא מזהה אותו. החלק השני של הבעיה (שנדמה לי שהוא העיקר) שמה שתקע אותי זה לאו דוקא פורמט הקובץ והדרך לקרוא אותו, אלא חוסר בידע על הקובץ הספציפי הזה, על מבנה התוכן שלו.
    הצלחתי הרי לקבל טבלה של פיקסלים, שזה בעצם מערך של נתונים בינאריים, ולכן לכאורה יש לי תוצאה ביד. עלי לתת את המיקום שאני צריך ולקבל את התוצאה המתאימה. הבעיה שהתוצאה היא מספר בינארי יחיד (שמתורגם לINT) ואני אמור לקבל מחרוזת טקסט או משהו כזה שמכילה לא מעט מידע. אז מה אני מפספס?

    תגובה 1 תגובה אחרונה
    1
  • nigunN מנותק
    nigunN מנותק
    nigun
    השיב לdavidnead ב נערך לאחרונה על ידי
    #8

    @davidnead אמר בחילוץ נתונים מטאורלוגיים מקובץ geoTiff:

    וכמו שאמרת רובם ב-R שאין לי שום ניסיון איתו

    לא התכוונתי שתעבור ללמוד R
    אלא לעבור על הקוד ולקרוא בעיקר את ההערות
    אולי לעבור גם על מדריך בסיסי לסינטקסט של R בסגנון הזה

    ואז יש סיכוי סביר שתבין את מבנה הקובץ של worldclim (שיתכן ששונה קצת מקבצים של חברות אחרות) ותיישם את זה בJS.

    מייל: nigun@duck.com

    תגובה 1 תגובה אחרונה
    0

  • התחברות

  • אין לך חשבון עדיין? הרשמה

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

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.