یک مجموعه داده ایجاد کنید

ایجاد یک مجموعه داده یک فرآیند دو مرحله ای است:

  1. برای ایجاد مجموعه داده درخواست دهید.

  2. درخواستی برای آپلود داده ها در مجموعه داده ارائه دهید.

پیش نیازها

هنگام ایجاد یک مجموعه داده:

  • نام‌های نمایشی باید در پروژه Google Cloud شما منحصربه‌فرد باشند.
  • نام های نمایشی باید کمتر از 64 بایت باشند (از آنجایی که این کاراکترها در UTF-8 نشان داده می شوند، در برخی از زبان ها هر کاراکتر را می توان با چندین بایت نشان داد).
  • توضیحات باید کمتر از 1000 بایت باشد.

هنگام آپلود داده ها:

  • انواع فایل های پشتیبانی شده CSV، GeoJSON و KML هستند.
  • حداکثر اندازه فایل پشتیبانی شده 350 مگابایت است.
  • نام ستون های مشخصه نمی تواند با رشته "?_" شروع شود.
  • هندسه های سه بعدی پشتیبانی نمی شوند. این شامل پسوند "Z" در قالب WKT و مختصات ارتفاع در قالب GeoJSON است.

الزامات GeoJSON

Maps Datasets API از مشخصات GeoJSON فعلی پشتیبانی می کند. Maps Datasets API همچنین از فایل‌های GeoJSON که حاوی هر یک از انواع شیء زیر هستند پشتیبانی می‌کند:

  • اجسام هندسی شیء هندسی یک شکل فضایی است که به عنوان اتحاد نقاط، خطوط و چندضلعی ها با سوراخ های اختیاری توصیف می شود.
  • اشیاء را مشخص کنید . یک شیء ویژگی شامل یک هندسه به اضافه جفت‌های نام/مقدار اضافی است که معنای آن‌ها مختص کاربرد است.
  • مجموعه های ویژه مجموعه ویژگی مجموعه ای از اشیاء ویژگی است.

Maps Datasets API از فایل‌های GeoJSON که داده‌هایی در یک سیستم مرجع مختصات (CRS) غیر از WGS84 دارند، پشتیبانی نمی‌کند.

برای اطلاعات بیشتر در مورد GeoJSON، مطابق با RFC 7946 را ببینید.

الزامات KML

Maps Datasets API شرایط زیر را دارد:

  • همه 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 به نقطه پایانی مجموعه داده، یک مجموعه داده ایجاد کنید:

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 یا از یک فایل محلی در مجموعه داده آپلود کنید.

داده ها را از فضای ذخیره سازی ابری بارگذاری کنید

با ارسال یک درخواست POST به نقطه پایانی مجموعه داده‌ها که شامل شناسه مجموعه داده نیز می‌شود، از فضای ذخیره‌سازی ابری در مجموعه داده خود آپلود می‌کنید:

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

در بدنه درخواست JSON:

  • از inputUri برای تعیین مسیر فایل به منبع حاوی داده در Cloud Storage استفاده کنید. این مسیر به شکل gs:// GCS_BUCKET / FILE است.

    کاربر درخواست کننده به نقش Storage Object Viewer یا هر نقش دیگری که شامل مجوز storage.objects.get باشد نیاز دارد. برای اطلاعات بیشتر در مورد مدیریت دسترسی به فضای ذخیره‌سازی ابری، به نمای کلی کنترل دسترسی مراجعه کنید.

  • از 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 به نقطه پایانی مجموعه داده ارسال کنید که شامل شناسه مجموعه داده نیز می شود:

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"
}