מהו קובץ GeoJSON?
GeoJSON הוא פורמט מבוסס JSON שנועד לייצג את המאפיינים הגיאוגרפיים עם התכונות הלא מרחביות שלהם. פורמט זה מגדיר אובייקטי JSON שונים (JavaScript Object Notation) ואופן ההצטרפות שלהם. פורמט JSON מייצג מידע קולקטיבי על המאפיינים הגיאוגרפיים, ההיקף המרחבי והמאפיינים שלהם. אובייקט של קובץ זה עשוי להצביע על גיאומטריה (Point, LineString, Polygon), תכונה או אוסף של תכונות. המאפיינים משקפים כתובות ומקומות כרחובות של נקודות, כבישים ראשיים וגבולות כמחרוזות קווים ומדינות, מחוזות ואזורי יבשה כמצולעים. באמצעות GeoJSON, יישומי ניתוב וניווט שונים לנייד יכולים לציין את הכיסוי של השירותים שלהם. הרחבה של GeoJSON היא TopoJSON שגודלה קטן יותר ומקודדת טופולוגיה גיאו-מרחבית.
היסטוריה קצרה
כוח המשימה להנדסת האינטרנט (IETF), בשיתוף עם מחברי הפורמט, עיצב GeoJSON WG כדי לשחרר את GeoJSON באפריל 2015. החלפת 2008 מפרט GeoJSON, RFC 7946, המפרט הסטנדרטי החדש של פורמט GeoJSON שפורסם באוגוסט 2016.
פורמט קובץ GeoJSON
תיאום
קואורדינטה היא המרכיב הבסיסי של כל נתונים גיאוגרפיים. זהו ממד יחיד (קו אורך, קו רוחב) המייצג מספר בודד (פורמט עשרוני) ולפעמים מתעד גם קואורדינטה לגובה. גם זמן הוא מימד אבל מורכבותו מקשה על תיעודו כקואורדינטה. קואורדינטות בשני JSON GeoJSON מעוצבות כמו מספרים.
עמדה
מערך מסודר של קואורדינטות מייצג את המיקום. זוהי היחידה הקטנה ביותר שיכולה להצביע על נקודה על פני כדור הארץ.
[קו אורך, קו רוחב, גובה]
לפני שחרורו של המפרט הנוכחי, GeoJSON אפשרה לרשום שלוש קואורדינטות לכל עמדה, אך לא מותר לפי המפרט החדש.
גיאומטריה
גיאומטריות הן צורות פשוטות (נקודות, עקומות ומשטחים) ב-GeoJSON המורכבות מסוג ואוסף קואורדינטות. נקודה היא הגיאומטריה הפשוטה ביותר שמייצגת מיקום בודד
{ "type": "נקודה", "קואורדינטות": [0, 0] }
LineStrings
לפחות שני מקומות מחוברים משמשים לייצוג קו.
{ "type": "LineString", "coordinates": [[10, 30], [10, 10]] }
מחרוזות נקודות וקו הן שתי הקטגוריות הפשוטות ביותר של גיאומטריה. שני סוגי הגיאומטריה אינם מטרידים כללים גיאומטריים רבים. נקודה יכולה להיות מיוצגת במקום בכל מקום, ולקו יכול להיות יותר מנקודה אחת, גם אם הנקודות חוצות את עצמן.
מצולעים
גיאומטריות GeoJSON נראות מורכבות יותר במצולעים. למצולעים יש אזורי פנים וחוץ ויכולים להחזיק חורים בפנים.
{
"type": "Polygon",
"Coordinates": [
[
[30, 10], [10, 10], [10, 0], [20, 40]
]
]
}
בהשוואה ל-LineStrings, במצולעים, רשימת הקואורדינטות היא רמה אחת יותר מקוננת ויכולה להכיל גזרות כמו סופגניות.
רמת קואורדינטות
בפורמט GeoJSON, עבור מאפיין הקואורדינטות, יש ארבע רמות עומק.
תכונות
גיאומטריות הן החלק המרכזי של GeoJSON, לכן, הנתונים בעולם האמיתי הם יותר מאשר צורות פשוטות בעלות זהות ותכונות. תכונות מתעדות את הגיאומטריה כמו גם את המאפיינים שלהן.
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [20, 10]
},
"properties": {
"name": "fortune island"
}
}
מאפייני תכונה יכולים להיות סוג של אובייקט JSON המכיל מיפוי ערכי מפתח בעומק יחיד.
FeatureCollection
ברמה העליונה של קבצי GeoJSON, FeatureCollection הוא הדבר הנפוץ ביותר שנראה כך:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [20, 10]
},
"properties": {
"name": "null island"
}
}
]
}
הרבה חבילות תוכנת מיפוי ו-GIS תומכות ב-GeoJSON כולל תוכנות GeoDjango, OpenLayers ותוכנות Geoforge. זה גם תואם ל-PostGIS ול-Mapnik. שירותי ה-API של Google, Yahoo ו-Bing Maps תומכים גם ב-GeoJSON.