Cómo crear un conjunto de datos

La creación de un conjunto de datos es un proceso de dos pasos:

  1. Realiza una solicitud para crear el conjunto de datos.

  2. Realiza una solicitud para subir datos al conjunto de datos.

Requisitos previos

Cuando crees un conjunto de datos, ten en cuenta lo siguiente:

  • Los nombres visibles deben ser únicos para tu proyecto de Google Cloud.
  • Los nombres visibles deben tener menos de 64 bytes (dado que estos caracteres se representan en UTF-8, cada carácter puede representarse mediante varios bytes en algunos idiomas).
  • Las descripciones deben tener menos de 1,000 bytes.

Cuando subas datos, ten en cuenta lo siguiente:

  • Los tipos de archivo admitidos son CSV, GeoJSON y KML.
  • El tamaño de archivo máximo que se admite es 350 MB.
  • Los nombres de las columnas de atributos no pueden comenzar con la cadena "?_".
  • No se admiten las geometrías tridimensionales. Esto incluye el sufijo "Z" en el formato WKT y la coordenada de altitud en el formato GeoJSON.

Requisitos de GeoJSON

La API de Maps Datasets admite la especificación GeoJSON actual. La API de Maps Datasets también admite archivos GeoJSON que contienen cualquiera de los siguientes tipos de objetos:

  • Objetos de geometría. Un objeto de geometría es una forma espacial descrita como una unión de puntos, líneas y polígonos con agujeros opcionales.
  • Objetos de componente. Un objeto de componente contiene una geometría y pares de nombre/valor adicionales cuyo significado es específico para cada aplicación.
  • Colecciones de componentes: Una colección de componentes es un conjunto de objetos de componente.

La API de Maps Datasets no admite archivos GeoJSON que tengan datos en un sistema de referencia de coordenadas (CRS) distinto de WGS84.

Para obtener más información sobre GeoJSON, consulta el artículo sobre el cumplimiento de RFC 7946.

Requisitos de KML

La API de Maps Datasets tiene los siguientes requisitos:

  • Todas las URLs deben ser locales (o relativas) al archivo.
  • Se admiten las geometrías de punto, línea y polígono.
  • Todos los atributos de datos se consideran cadenas.
No se admiten los siguientes componentes de KML:
  • Los íconos o <styleUrl> que se definan fuera del archivo
  • Los vínculos de red, como <NetworkLink>
  • Las superposiciones de suelo, como <GroundOverlay>
  • Las geometrías 3D o cualquier etiqueta relacionada con la altitud, como <altitudeMode>
  • Las especificaciones de cámara, como <LookAt>
  • Los diseños definidos dentro del archivo KML

Requisitos de CSV

Para los archivos CSV, los nombres de columnas admitidos se indican a continuación, en orden de prioridad:

  • latitude, longitude
  • lat, long
  • x, y
  • wkt (Well-Known Text)
  • address, city, state, zip
  • address
  • Una sola columna que contiene toda la información de la dirección, como 1600 Amphitheatre Parkway Mountain View, CA 94043

Por ejemplo, tu archivo contiene columnas llamadas x, y y wkt. Dado que x e y tienen una prioridad más alta, según el orden de los nombres de columna admitidos en la lista anterior, los valores en las columnas x y y se utilizan, y la columna wkt se ignora.

Además:

  • Cada nombre de columna debe pertenecer a una sola columna. Esto significa que no puedes tener una columna llamada xy que contenga datos de coordenadas "x" e "y". Las coordenadas "x" e "y" deben estar en columnas separadas.
  • Los nombres de las columnas no distinguen mayúsculas de minúsculas.
  • El orden de los nombres de columna no es relevante. Por ejemplo, si tu archivo CSV contiene columnas lat y long, estas pueden mostrarse en cualquier orden.

Manejo de errores de carga de datos

Cuando subes datos a un conjunto de datos, es posible que experimentes uno de los errores comunes que se describen en esta sección.

Errores de GeoJSON

Estos son algunos de los errores comunes de GeoJSON:

  • Falta el campo type, o bien type no es una cadena. El archivo de datos GeoJSON subido debe contener un campo de cadena llamado type como parte de la definición de cada objeto de componente y objeto de geometría.

Errores de KML

Estos son algunos de los errores comunes de KML:

  • El archivo de datos no debe contener ninguno de los componentes KML no admitidos que se mencionaron en la lista anterior. De lo contrario, la importación de datos podría fallar.

Errores de CSV

Estos son algunos de los errores comunes de CSV:

  • A algunas filas les faltan valores para una columna de geometría. Todas las filas de un archivo CSV deben contener valores no vacíos para las columnas de geometría. Entre las columnas de geometría, se incluyen las siguientes:
    • latitude, longitude
    • lat, long
    • x, y
    • wkt
    • address, city, state, zip
    • address
    • Una sola columna que contiene toda la información de la dirección, como 1600 Amphitheatre Parkway Mountain View, CA 94043
  • Si x y y son las columnas de geometría, asegúrate de que las unidades sean de longitud y latitud. Algunos conjuntos de datos públicos usan diferentes sistemas de coordenadas bajo los encabezados x e y. Si se usan unidades incorrectas, el conjunto de datos podría importarse de forma correcta, pero los datos renderizados podrían mostrar puntos del conjunto de datos en ubicaciones inesperadas.

Realiza una solicitud para crear el conjunto de datos

Para crear un conjunto de datos, envía una solicitud POST al extremo datasets:

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

Pasa un cuerpo JSON a la solicitud que define el conjunto de datos. Obligaciones:

  • Especifica el displayName del conjunto de datos. El valor de displayName debe ser único para todos los conjuntos de datos.

  • Establece usage en USAGE_DATA_DRIVEN_STYLING.

Por ejemplo:

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

La respuesta contiene el ID del conjunto de datos, en el formato projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID junto con información adicional. Usa el ID del conjunto de datos cuando realices solicitudes para actualizar o modificar el conjunto de datos.

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

Realiza una solicitud para subir datos al conjunto de datos

Después de crear el conjunto de datos, sube los datos desde Google Cloud Storage o desde un archivo local al conjunto de datos.

Sube datos desde Cloud Storage

Para subir un archivo desde Cloud Storage a tu conjunto de datos, envía una solicitud POST al extremo datasets que también incluya el ID del conjunto de datos:

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

En el cuerpo de la solicitud JSON, haz lo siguiente:

  • Usa inputUri para especificar la ruta de acceso del archivo al recurso que contiene los datos en Cloud Storage. Esta ruta tiene el formato gs://GCS_BUCKET/FILE.

    El usuario que realiza la solicitud debe tener la función de visualizador de objetos de Storage o cualquier otra función que incluya el permiso storage.objects.get. Para obtener más información sobre cómo administrar el acceso a Cloud Storage, consulta Descripción general del control de acceso.

  • Usa fileFormat para especificar el formato de archivo de los datos de la siguiente manera: FILE_FORMAT_GEOJSON (archivo GeoJson), FILE_FORMAT_KML (archivo KML) o FILE_FORMAT_CSV (archivo CSV).

Por ejemplo:

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

La respuesta tiene el siguiente formato:

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

Sube datos desde un archivo

Para subir datos desde un archivo, envía una solicitud HTTP POST al extremo datasets que también incluya el ID del conjunto de datos:

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

La solicitud contiene lo siguiente:

  • El encabezado Goog-Upload-Protocol se establece en multipart.

  • La propiedad metadata que especifica la ruta a un archivo donde se especifica el tipo de datos que se subirá, como FILE_FORMAT_GEOJSON (archivo GeoJSON), FILE_FORMAT_KML (archivo KML) o FILE_FORMAT_CSV (archivo CSV).

    El contenido de este archivo tiene el siguiente formato:

    {"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
  • La propiedad rawdata que especifica la ruta de acceso al archivo GeoJSON, KML o CSV que contiene los datos que se subirán.

En la siguiente solicitud, se usa la opción curl -F para especificar la ruta de acceso a los dos archivos:

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

La respuesta tiene el siguiente formato:

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