יצירת מערך נתונים

יצירת מערך נתונים היא תהליך דו-שלבי:

  1. שולחים בקשה ליצירת מערך הנתונים.

  2. שולחים בקשה להעלאת נתונים למערך הנתונים.

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

דרישות מוקדמות

כשיוצרים מערך נתונים:

  • השמות המוצגים חייבים להיות ייחודיים בפרויקט שלכם ב-Google Cloud.
  • השמות המוצגים חייבים להיות קטנים מ-64 בייטים (מכיוון שהתווים האלה מיוצגים ב-UTF-8, בשפות מסוימות, כל תו יכול להיות מיוצג על ידי מספר בייטים).
  • התיאורים חייבים להיות קטנים מ-1,000 בייטים.

כשמעלים נתונים:

  • סוגי הקבצים הנתמכים הם CSV , GeoJSON ו-KML.
  • גודל הקובץ המקסימלי הנתמך הוא 350MB.
  • השמות של עמודות המאפיינים לא יכולים להתחיל במחרוזת "?_".
  • אין תמיכה בגיאומטריה תלת ממדית. כולל האות Z סיומת בפורמט WKT, ואת קואורדינטת הגובה בפורמט GeoJSON.

שיטות מומלצות להכנת נתונים

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

ריכזנו כאן כמה שיטות מומלצות להכנת הנתונים:

  1. מזעור המאפיינים של התכונות. שמור רק את מאפייני התכונות הדרושים לסגנון לדוגמה, 'id'. ו-'category'. אפשר לצרף נכסים נוספים לתכונה מסוימת בלקוח באמצעות סגנונות מבוססי-נתונים במפתח מזהה ייחודי. לדוגמה, ראה הצגת הנתונים בזמן אמת בעזרת סגנון מבוסס-נתונים.
  2. מומלץ להשתמש בסוגי נתונים פשוטים בשביל אובייקטים של מאפיינים, כמו מספרים שלמים, כדי להקטין את גודל המשבצת ולשפר את ביצועי המפה.
  3. לפני העלאת קובץ, הגדירו צורות גיאומטריות מורכבות. אפשר לעשות זאת כלי גיאו-מרחבי לבחירתכם, כמו קוד פתוח. בכלי Mapshaper.org, או ב-BigQuery באמצעות ST_Simplify של פוליגונים מורכבים של פוליגונים.
  4. לאסוף נקודות צפופות מאוד לפני העלאת קובץ. אפשר לעשות זאת כלי גיאו-מרחבי לבחירתכם, כמו קוד פתוח. פונקציות של אשכול turf.js או ב-BigQuery באמצעות ST_CLUSTERDBSCAN בפורמט גיאומטרי של נקודות צפופות.

הנחיות נוספות לגבי שיטות מומלצות לגבי מערכי נתונים זמינות המחשה חזותית של נתונים באמצעות מערכי נתונים ו-BigQuery.

דרישות לגבי GeoJSON

Maps Datasets API תומך המפרט של GeoJSON. ב-Maps Datasets API יש גם תמיכה בקובצי GeoJSON שמכילים כל אחד מסוגי האובייקטים הבאים:

  • אובייקטים גיאומטריים. אובייקט גיאומטרי הוא צורה מרחבית, שמתוארת כאיחוד של נקודות, קווים ומצולעים עם חורים אופציונליים.
  • הצגת אובייקטים. אובייקט של פריט מכיל גיאומטריה בתוספת צמדים של שם/ערך, שהמשמעות שלהם היא ספציפית לאפליקציה.
  • אוספים של תכונות אוסף פיצ'רים הוא קבוצה של אובייקטים של ישויות.

ממשק ה-API של מפות Google Datasets לא תומך בקובצי GeoJSON שמכילים נתונים במערכת ייחוס קואורדינטות (CRS) מלבד WGS84.

למידע נוסף על GeoJSON, אפשר לעיין במאמר תאימות לתקן RFC 7946.

דרישות KML

ממשק ה-API של מפות Google כולל את הדרישות הבאות:

  • כל כתובות ה-URL חייבות להיות מקומיות (או יחסיות) לקובץ עצמו.
  • תמיכה גיאומטרית של נקודות, קווים ופוליגונים.
  • כל מאפייני הנתונים נחשבים למחרוזות.
תכונות ה-KML הבאות לא נתמכות:
  • סמלים או <styleUrl> שמוגדרים מחוץ לקובץ.
  • קישורי רשת, כמו <NetworkLink>
  • שכבות-על של קרקע, כמו <GroundOverlay>
  • צורות גיאומטריות תלת-ממדיות או כל תג שקשור לגובה כמו <altitudeMode>
  • מפרטי מצלמה כמו <LookAt>
  • סגנונות שהוגדרו בתוך קובץ ה-KML.

דרישות לגבי CSV

לקובצי CSV, שמות העמודות הנתמכים מפורטים למטה לפי סדר עדיפות:

  • latitude, longitude
  • lat, long
  • x, y
  • wkt (טקסט ידוע)
  • address, city, state, zip
  • address
  • עמודה אחת שמכילה את כל פרטי הכתובת, כמו 1600 Amphitheatre Parkway Mountain View, CA 94043

לדוגמה, הקובץ מכיל עמודות בשם x, y ו-wkt. האפליקציות x ו-y מקבלות עדיפות גבוהה יותר, כפי שנקבע לפי הסדר של שמות העמודות הנתמכים ברשימה שלמעלה, הערכים בעמודות x ו-y נעשה שימוש והמערכת מתעלמת מהעמודה wkt.

כמו כן:

  • כל שמות של עמודות צריכים להשתייך לעמודה אחת. כלומר, לא יכולה להיות עמודה בשם xy שמכיל נתונים של קואורדינטות x ו-y. נקודות ה-x ו-y חייבות להיות עמודות נפרדות.
  • שמות העמודות הם לא תלויי-רישיות.
  • הסדר של שמות העמודות לא משנה. לדוגמה, אם קובץ ה-CSV מכיל העמודות lat ו-long יכולות להופיע בכל סדר שתרצו.

טיפול בשגיאות בהעלאת נתונים

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

שגיאות GeoJSON

דוגמאות לשגיאות נפוצות ב-GeoJSON:

  • השדה type חסר, או שהשדה type אינו מחרוזת. הועלו קובץ הנתונים GeoJSON חייב להכיל שדה מחרוזת בשם type כחלק מכל שדה הגדרת אובייקט Feature והגדרת אובייקט גיאומטרי.

שגיאות KML

דוגמאות לכמה שגיאות KML נפוצות:

  • קובץ הנתונים לא יכול להכיל אף אחת מתכונות ה-KML הלא נתמכות המפורטות למעלה, אחרת ייבוא הנתונים עלול להיכשל.

שגיאות CSV

דוגמאות לכמה שגיאות CSV נפוצות:

  • בחלק מהשורות חסרים ערכים של עמודה בגיאומטריה. כל השורות בקובץ CSV חייבות להכיל שאינם ריקים לעמודות הגיאומטריה. עמודות הגיאומטריה כוללות:
    • latitude, longitude
    • lat, long
    • x, y
    • wkt
    • address, city, state, zip
    • address
    • עמודה אחת שמכילה את כל פרטי הכתובת, כמו 1600 Amphitheatre Parkway Mountain View, CA 94043
  • אם x ו-y הן עמודות גיאומטריות, צריך לוודא שהיחידות קו אורך וקו רוחב. חלק ממערכי הנתונים הציבוריים משתמשים במערכות קואורדינטות שונות מתחת לכותרות x וגם y אם תשתמשו ביחידות הלא נכונות, יכול להיות שמערך הנתונים יייבא בהצלחה, אבל הנתונים שעברו רינדור עשויים להציג את הנקודות במערך הנתונים במיקומים לא צפויים.

יצירת מערך הנתונים

כדי ליצור מערך נתונים, שולחים בקשת POST נקודת קצה של datasets:

https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets

מעבירים גוף JSON לבקשה המגדירה את מערך הנתונים. פעולות שצריך לבצע:

  • מציינים את ה-displayName של מערך הנתונים. הערך של displayName חייב הוא ייחודי לכל מערכי הנתונים.

  • מגדירים את usage להיות USAGE_DATA_DRIVEN_STYLING.

לדוגמה:

curl -X POST -d '{
    "displayName": "My Test Dataset", 
    "usage": "USAGE_DATA_DRIVEN_STYLING"
  }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $TOKEN" \
  https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets

התשובה תכיל את המזהה של מערך הנתונים, בפורמט הבא: projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID יחד עם מידע נוסף. צריך להשתמש במזהה מערך הנתונים כששולחים בקשות לעדכן או לשנות את מערך הנתונים.

{
  "name": "projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46",
  "displayName": "My Test Dataset",
  "usage": [
    "USAGE_DATA_DRIVEN_STYLING"
  ],
  "createTime": "2022-08-15T17:50:00.189682Z",
  "updateTime": "2022-08-15T17:50:00.189682Z" 
}

העלאת נתונים למערך הנתונים

אחרי שיוצרים את מערך הנתונים, מעלים את הנתונים Google Cloud Storage או מקובץ מקומי למערך הנתונים.

העלאת נתונים מ-Cloud Storage

כדי להעלות מ-Cloud Storage למערך הנתונים, שולחים בקשת POST datasets, כולל את המזהה של מערך הנתונים:

https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import

בגוף הבקשה ב-JSON:

  • צריך להשתמש ב-inputUri כדי לציין את הנתיב של הקובץ למשאב שמכיל את הנתונים ב-Cloud Storage. הנתיב הזה מופיע בפורמט gs://GCS_BUCKET/FILE

    המשתמש ששולח את הבקשה דורש אובייקט אחסון צפייה או כל תפקיד אחר שכולל את ההרשאה storage.objects.get. עבור לקבלת מידע נוסף על ניהול הגישה ל-Cloud Storage, קראו את המאמר סקירה כללית על בקרת הגישה

  • משתמשים ב-fileFormat כדי לציין את פורמט הקובץ של הנתונים באחת מהדרכים הבאות: FILE_FORMAT_GEOJSON (קובץ GeoJson), FILE_FORMAT_KML (קובץ KML), או FILE_FORMAT_CSV (קובץ CSV).

לדוגמה:

curl -X POST  -d '{
    "gcs_source":{
      "inputUri": "gs://my_bucket/my_csv_file",
      "fileFormat": "FILE_FORMAT_CSV"
    }
  }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \
  -H "content-type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:import

התגובה תופיע בתבנית:

{
  "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER"
}

העלאת נתונים מקובץ

כדי להעלות נתונים מקובץ, צריך לשלוח בקשת HTTP POST אל datasets, כולל את המזהה של מערך הנתונים:

https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import

הבקשה כוללת:

  • הכותרת Goog-Upload-Protocol מוגדרת כ-multipart.

  • המאפיין metadata שמציין את הנתיב לקובץ שמציין את סוג הנתונים להעלאה, בתור: FILE_FORMAT_GEOJSON (קובץ GeoJSON), FILE_FORMAT_KML (קובץ KML) או FILE_FORMAT_CSV (קובץ CSV).

    התוכן של הקובץ הזה הוא בפורמט הבא:

    {"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
  • המאפיין rawdata שמציין את הנתיב לקובץ GeoJSON, KML או CSV שמכילים את הנתונים להעלאה.

הבקשה הבאה משתמשת באפשרות curl -F כדי לציין את הנתיב לשתיהן קבצים:

curl -X POST \
  -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Goog-Upload-Protocol: multipart" \
  -F "metadata=@csv_metadata_file" \
  -F "rawdata=@csv_data_file" \
  https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:import

התגובה תופיע בתבנית:

{
  "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER"
}

העלאת נתונים חדשים למערך הנתונים

אחרי שיצרתם את מערך הנתונים ותעלו את הנתונים הראשוניים בהצלחה, המצב של מערך הנתונים מוגדר ל-STATE_COMPLETED. כלומר מערך הנתונים מוכן לשימוש באפליקציה. כדי לקבוע את ה-state של מערך הנתונים, ראו קבלת של מערך הנתונים.

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

אם הנתונים החדשים יועלו בהצלחה:

  • המצב של הגרסה החדשה של מערך הנתונים מוגדר כ-STATE_COMPLETED.

  • הגרסה החדשה הופכת ל"פעילה" היא הגרסה שבה נעשה שימוש אפליקציה.

אם יש שגיאה בהעלאה:

  • המצב של הגרסה החדשה של מערך הנתונים מוגדר לאחד מהמצבים הבאים:

    • STATE_IMPORT_FAILED
    • STATE_PROCESSING_FAILED
    • STATE_PUBLISHING_FAILED
    • STATE_DELETION_FAILED
  • הגרסה הקודמת של מערך הנתונים תישאר 'פעילה' והוא הגרסה שבה האפליקציה משתמשת.