La creación de un conjunto de datos es un proceso de dos pasos:
Realiza una solicitud para crear el conjunto de datos.
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 contengan 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 referencias 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.
- 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
ylong
, 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 bientype
no es una cadena. El archivo de datos GeoJSON subido debe contener un campo de cadena llamadotype
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
yy
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 encabezadosx
ey
. 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 dedisplayName
debe ser único para todos los conjuntos de datos.Establece
usage
enUSAGE_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 tu conjunto de datos desde Cloud Storage, 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:
Usa
inputUri
para especificar la ruta de acceso del archivo al recurso que contiene los datos en Cloud Storage. Esta ruta tiene el formatogs://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 como:FILE_FORMAT_GEOJSON
(archivo GeoJson),FILE_FORMAT_KML
(archivo KML) oFILE_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 estableció enmultipart
.La propiedad
metadata
que especifica la ruta a un archivo que especifica el tipo de datos que se subirá, comoFILE_FORMAT_GEOJSON
(archivo GeoJSON),FILE_FORMAT_KML
(archivo KML) oFILE_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" }