A criação de um conjunto de dados é um processo de duas etapas:
Faça uma solicitação para criar o conjunto de dados.
Faça uma solicitação para fazer upload de dados no conjunto.
Após o upload de dados inicial, é possível enviar novos dados para o conjunto de dados para criar uma nova versão dele.
Pré-requisitos
Ao criar um conjunto de dados:
- Os nomes de exibição precisam ser exclusivos no projeto do Google Cloud.
- Esses nomes devem ter menos de 64 bytes. Como os caracteres são representados em UTF-8, em alguns idiomas, um caractere pode ser representado por vários bytes.
- As descrições precisam ter menos de 1.000 bytes.
Ao fazer o upload de dados:
- Os tipos de arquivos compatíveis são CSV, GeoJSON e KML.
- O tamanho máximo de arquivo permitido é 350 MB.
- Os nomes das colunas de atributos não podem começar com a string "?_".
- Geometrias tridimensionais não são aceitas. Isso inclui o sufixo "Z" no formato WKT e a coordenada de altitude no formato GeoJSON.
Práticas recomendadas para a preparação de dados
Se os dados de origem forem complexos ou grandes, como pontos densos, linestrings longas ou polígonos (geralmente tamanhos de arquivo de origem maiores que 50 MB se enquadram nessa categoria), simplifique os dados antes de fazer o upload para ter o melhor desempenho em um mapa visual.
Confira algumas práticas recomendadas para preparar os dados:
- Minimize as propriedades de recursos. Mantenha apenas as propriedades de elementos necessárias para estilizar seu mapa, por exemplo, "id" e "category". É possível associar outras propriedades a um recurso em um aplicativo cliente usando estilos baseados em dados em uma chave de identificador exclusivo. Por exemplo, consulte Ver seus dados em tempo real com o estilo baseado em dados.
- Use tipos de dados simples para objetos de propriedade sempre que possível, como números inteiros, para minimizar o tamanho do bloco e melhorar o desempenho do mapa.
- Simplifique geometrias complexas antes de fazer o upload de um arquivo. Para fazer isso, use a ferramenta geoespacial que preferir, como o utilitário de código aberto Mapshaper.org, ou no BigQuery, usando ST_Simplify em geometrias de polígono complexas.
- Pontos muito densos do cluster antes do upload de um arquivo. Faça isso na ferramenta geoespacial que preferir, como as funções de cluster turf.js de código aberto, ou no BigQuery usando ST_CLUSTERDBSCAN em geometrias de pontos densos.
Consulte mais orientações sobre as práticas recomendadas para conjuntos de dados em Visualizar seus dados com conjuntos de dados e o BigQuery.
Requisitos de GeoJSON
A API Maps Datasets é compatível com a especificação atual do GeoJSON (link em inglês) A API Maps Datasets também aceita arquivos GeoJSON que contêm qualquer um destes tipos de objetos:
- Objetos de geometria. Esse tipo de objeto é uma forma espacial, descrita como uma união de pontos, linhas e polígonos com furos opcionais.
- Objetos de elementos. Esse tipo de objeto contém uma geometria e outros pares de nome/valor, com um significado específico do aplicativo.
- Coleções de elementos. Uma coleção desse tipo é um conjunto de objetos de elementos.
A API Maps Datasets não é compatível com arquivos GeoJSON que têm dados em um sistema de referência de coordenadas (CRS, na sigla em inglês) diferente de WGS84.
Para mais informações sobre o GeoJSON, consulte Compliance com RFC 7946 (ambos os links em inglês).
Requisitos de KML
A API Maps Datasets tem os seguintes requisitos:
- Todos os URLs precisam ser locais (ou relativos) ao próprio arquivo.
- Compatível com geometrias de ponto, linha e polígono.
- Todos os atributos de dados são considerados strings.
- Ícones ou
<styleUrl>
definidos fora do arquivo - Links de rede, como
<NetworkLink>
- Sobreposições de solo, por exemplo,
<GroundOverlay>
- Geometrias 3D ou qualquer tag relacionada à altitude, como
<altitudeMode>
- Especificações da câmera, por exemplo,
<LookAt>
- Estilos definidos dentro do arquivo KML
Requisitos de CSV
Para arquivos CSV, os nomes das colunas compatíveis são listados abaixo em ordem de prioridade:
latitude
,longitude
lat
,long
x
,y
wkt
(texto conhecido)address
,city
,state
,zip
address
- Uma única coluna contendo todas as informações de endereço, como
1600 Amphitheatre Parkway Mountain View, CA 94043
Por exemplo, seu arquivo inclui colunas chamadas x
, y
e wkt
.
Como x
e y
têm uma prioridade mais alta, segundo a ordem dos nomes de colunas compatíveis na lista acima, os valores nas colunas x
e y
são usados, e a coluna wkt
é ignorada.
Além disso:
- Cada nome de coluna tem que pertencer a uma única coluna, ou seja, não é possível ter uma coluna chamada
xy
que inclua dados das coordenadas x e y. Essas coordenadas precisam estar em colunas diferentes. - Os nomes das colunas não diferenciam maiúsculas de minúsculas.
- A ordem dos nomes não importa. Por exemplo, se o arquivo CSV tiver colunas
lat
elong
, elas poderão estar em qualquer ordem.
Solucionar erros de upload de dados
Ao fazer o upload de dados para um conjunto, você pode encontrar um dos erros comuns descritos nesta seção.
Erros de GeoJSON
Exemplo de erro comum de GeoJSON:
- Campo
type
faltando, outype
não é uma string. O arquivo de dados GeoJSON enviado precisa ter um campo de string chamadotype
em cada definição de objeto de elemento e de geometria.
Erros de KML
Exemplo de erro comum de KML:
- O arquivo de dados não pode conter nenhum dos elementos KML incompatíveis listados acima. Caso contrário, a importação pode falhar.
Erros de CSV
Exemplos de erros comuns de CSV:
- Algumas linhas não contêm valores para uma coluna de geometria. Em um arquivo CSV, todas as linhas em colunas desse tipo precisam ter valores não vazios. Confira algumas colunas de geometria:
latitude
,longitude
lat
,long
x
,y
wkt
address
,city
,state
,zip
address
- Uma única coluna contendo todas as informações de endereço, como
1600 Amphitheatre Parkway Mountain View, CA 94043
- Se
x
ey
forem suas colunas de geometria, verifique se as unidades são longitude e latitude. Alguns conjuntos de dados públicos usam sistemas de coordenadas diferentes nos cabeçalhosx
ey
. Se as unidades incorretas forem usadas, o conjunto poderá ser importado, mas os dados renderizados talvez mostrem os pontos em locais inesperados.
Crie o conjunto de dados
Crie um conjunto de dados enviando uma solicitação POST
para o endpoint datasets:
https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets
Transmita um corpo JSON para a solicitação que define o conjunto de dados. Você deve:
Especifique o
displayName
do conjunto de dados. O valor dedisplayName
precisa ser exclusivo para todos os conjuntos de dados.Defina
usage
comoUSAGE_DATA_DRIVEN_STYLING
.
Exemplo:
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
A resposta contém o ID do conjunto de dados no formato projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID
, além de outras informações. Use o ID do conjunto de dados ao fazer solicitações para atualizar ou modificar o conjunto de dados.
{ "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" }
Fazer upload de dados para o conjunto de dados
Depois de criar o conjunto de dados, faça upload dos dados do Google Cloud Storage ou de um arquivo local para o conjunto de dados.
Fazer upload de dados do Cloud Storage
Para fazer o upload do Cloud Storage para o conjunto de dados, envie uma solicitação POST
para o endpoint datasets, que também inclui o ID do conjunto de dados:
https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
No corpo da solicitação JSON:
Use
inputUri
para especificar o caminho do arquivo para o recurso que contém os dados no Cloud Storage. Esse caminho está no formatogs://GCS_BUCKET/FILE
.Para fazer a solicitação, o usuário precisa ter o papel de Leitor de objetos do Storage ou qualquer outro que inclua a permissão
storage.objects.get
. Para mais informações sobre como gerenciar o acesso ao Cloud Storage, consulte Visão geral do controle de acesso.Use
fileFormat
para especificar o formato de arquivo dos dados como:FILE_FORMAT_GEOJSON
(arquivo GeoJson),FILE_FORMAT_KML
(arquivo KML) ouFILE_FORMAT_CSV
(arquivo CSV).
Exemplo:
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
A resposta está no formato:
{ "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER" }
Fazer upload de dados de um arquivo
Para fazer o upload de dados de um arquivo, envie uma solicitação POST
HTTP para o endpoint datasets que também inclui o ID do conjunto de dados:
https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import
A solicitação contém:
O cabeçalho
Goog-Upload-Protocol
está definido comomultipart
.A propriedade
metadata
que especifica o caminho para um arquivo que determina o tipo de dados para upload, comoFILE_FORMAT_GEOJSON
(arquivo GeoJSON),FILE_FORMAT_KML
(arquivo KML) ouFILE_FORMAT_CSV
(arquivo CSV).O conteúdo desse arquivo tem o seguinte formato:
{"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
A propriedade
rawdata
que especifica o caminho para o arquivo GeoJSON, KML ou CSV que contém os dados para upload.
A solicitação a seguir usa a opção curl -F
para especificar o caminho para os dois
arquivos:
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
A resposta está no formato:
{ "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER" }
Fazer upload de novos dados para o conjunto de dados
Depois de criar o conjunto de dados e fazer o upload dos dados iniciais com sucesso, o estado do conjunto de dados é definido como STATE_COMPLETED
. Isso significa que o conjunto de dados está pronto para ser usado no app. Para determinar o state
do conjunto de dados, consulte Receber um conjunto de dados.
Também é possível fazer o upload de novos dados para o conjunto de dados para criar uma nova versão dele. Para fazer upload de novos dados, use o mesmo processo usado para Fazer upload de dados do Cloud Storage ou Fazer upload de dados de um arquivo e especifique os novos dados para upload.
Se o upload dos novos dados for concluído:
O estado da nova versão do conjunto de dados é definido como
STATE_COMPLETED
.A nova versão se torna a versão "ativa" e é a versão usada pelo app.
Se houver um erro no upload:
O estado da nova versão do conjunto de dados é definido como um dos seguintes estados:
STATE_IMPORT_FAILED
STATE_PROCESSING_FAILED
STATE_PUBLISHING_FAILED
STATE_DELETION_FAILED
A versão bem-sucedida do conjunto de dados anterior permanece como a versão "ativa" e é a versão usada pelo app.