Como exportar blocos de mapa

Para informações sobre como exportar para outros formatos, incluindo imagens, vídeos e tabelas (dados vetoriais), consulte Exportar dados.

Visão geral

Para mostrar dados de imagem (dados raster) em um mapa on-line, exporte os blocos de mapa usando Export.map.toCloudStorage(). Essa função exporta uma pirâmide de blocos de mapa para um bucket do Cloud Storage, de onde ela pode ser veiculada publicamente ou de forma privada. Ele é útil quando os dados da imagem são muito grandes para serem sobrepostos como uma única imagem. Esses blocos usam as coordenadas de blocos do Google Maps e são adequados para exibição usando a Plataforma Google Maps (APIs Maps), o Google Earth para Web e outras plataformas de mapeamento. Os blocos podem ser visualizados facilmente no Google Maps ou no Earth usando arquivos HTML fornecidos como parte da exportação.

Há várias configurações e etapas para a exportação, que podem ou não ser necessárias, dependendo de como você planeja usar ou publicar os Blocos. Algumas plataformas de mapeamento exigem que os blocos sejam acessíveis publicamente, enquanto outras funcionam com blocos privados. Se você estiver usando uma das APIs do Google Maps, provavelmente precisará ter uma chave de API da Plataforma Google Maps. Se você estiver fornecendo blocos para o Google Earth ou outras plataformas de mapeamento, provavelmente precisará definir as opções de nível de acesso e acesso JS (CORS) adequadas, dependendo de como planeja usar os blocos. Consulte a seção Diretrizes específicas da plataforma abaixo para ver as configurações necessárias.

Como exportar blocos de mapa para o Cloud Storage

O exemplo a seguir exporta blocos de uma imagem do Landsat para uma área na Califórnia.

Editor de código (JavaScript)

// --- Example Export Map Tiles - basic ---
// Specify area to clip/export, setup image and preview on map.
var exportRegion = ee.Geometry.BBox(-122.9, 37.1, -121.2, 38.2);
var landsatImage = ee.Image('LANDSAT/LC09/C02/T1_TOA/LC09_044034_20220111')
  .select(['B4', 'B3', 'B2'])
  .visualize({min: 0.02, max: 0.4, gamma: 1.2})
  .clip(exportRegion);
Map.addLayer(landsatImage, {}, 'landsatImage');
Map.centerObject(exportRegion);

// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEE',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true
});

Configuração do Python

Consulte a página Ambiente Python para informações sobre a API Python e o uso de geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Example Export Map Tiles - basic ---
# Specify area to clip/export, setup image and preview on map.
export_region = ee.Geometry.BBox(-122.9, 37.1, -121.2, 38.2)
landsat_image = (
    ee.Image('LANDSAT/LC09/C02/T1_TOA/LC09_044034_20220111')
    .select(['B4', 'B3', 'B2'])
    .visualize(min=0.02, max=0.4, gamma=1.2)
    .clip(export_region)
)
m = geemap.Map()
m.add_layer(landsat_image, {}, 'landsatImage')
m.center_object(export_region)
display(m)

# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEE',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
)
task.start()

Isso cria um novo diretório no bucket do Cloud Storage especificado, nomeado de acordo com o parâmetro description por padrão. É possível mudar o nome do diretório ou especificar subdiretórios com o parâmetro path. Você pode usar os arquivos index.html e earth.html no seu diretório de saída para visualizar os blocos no Maps ou no Earth.

ACLs e opções do CORS

O exemplo acima define as listas de controle de acesso (ACLs) dos blocos para torná-los acessíveis publicamente por solicitação direta, mas não define o acesso JS do bucket (configurações do CORS) para permitir que os apps da Web acessem. Isso significa que esses blocos exportados podem ser visualizados nos mapas e nas visualizações do Earth, mas não serão úteis para outras plataformas que exigem o acesso a JS. Você é considerado o proprietário do bucket de saída. Se você tiver permissão de gravação no bucket de saída especificado (mas não for o proprietário), defina writePublicTiles como false para usar a ACL de objeto padrão do bucket de saída.

Se você quiser abrir os blocos para acesso público por todos os apps da Web, adicione bucketCorsUris: ['*'] aos parâmetros da tarefa. O acesso público total ao JS pode ser indesejável quando há o risco de terceiros usarem seus Blocos e gerarem custos de nuvem. Para limitar isso, você pode restringir o acesso a JS apenas para apps da Web em domínios ou URLs específicos. As configurações de acesso a JS (CORS) são aplicadas no nível do bucket inteiro, não no nível da pasta ou do objeto.

As ACLs e o CORS podem ser definidos usando os parâmetros writePublicTiles e bucketCorsUris, respectivamente, ou na caixa de diálogo da tarefa de exportação, conforme mostrado abaixo:

Caixa de diálogo Export.map
A caixa de diálogo de tarefa Export.map.toCloudStorage().
  • Acesso de visualização/download. Se você quiser ter acesso (por exemplo, pelo editor de código ou apps do Earth Engine), será necessário tornar os blocos "acessíveis publicamente".
  • Acesso a JS. O bucket para onde o mapa é exportado precisa permitir a leitura se você quiser que o Code Editor, os apps do Earth Engine ou outros apps da Web tenham acesso aos blocos. Essas configurações de solicitação entre origens (CORS, na sigla em inglês) precisam ser configuradas no nível do bucket. Para conveniência, a caixa de diálogo de exportação do Earth Engine permite configurar o CORS para seu bucket no momento da exportação.
  • OBSERVAÇÃO:as configurações de acesso ao JS / CORS são aplicadas no nível do bucket, e não no nível da pasta ou do objeto. Portanto, a alteração das configurações vai atualizar todas as pastas e objetos no bucket. Saiba mais na documentação do CORS do Cloud Storage, incluindo como visualizar a configuração atual do CORS para um bucket.

Lista de parâmetros

Confira abaixo uma lista de todos os parâmetros de uma tarefa de exportação de blocos de mapa, mostrando o nome do parâmetro (argumento) no código e o campo correspondente na caixa de diálogo da tarefa (se aplicável). Alguns campos são mutuamente exclusivos (por exemplo, maxzoom e escala). Consulte a documentação do Export.map para mais detalhes.

Argumento no código Campo na caixa de diálogo de tarefas Observações
imagem N/A A imagem a ser exportada como blocos. Precisa ser uma imagem, não uma ImageCollection.
descrição Nome da tarefa Um nome legível da tarefa. O padrão é "myExportMapTask". Esse valor também é usado como o nome da pasta dos blocos, se o parâmetro "path" (prefixo de saída) não for especificado.
bucket Nome do bucket do GCS O bucket de destino em que a gravação será feita.
fileFormat Formato do arquivo O formato de arquivo dos blocos do mapa, um destes: "auto", "png" ou "jpg". O padrão é "automático", o que significa que os blocos opacos serão codificados como "jpg" e os blocos com transparência serão codificados como "png".
caminho Prefixo de saída A string usada como o caminho da saída. Um "/" final é opcional. Padrão para a descrição da tarefa (nome da tarefa)
writePublicTiles Nível de acesso de visualização/download Define se os blocos públicos serão gravados em vez de usar a ACL de objeto padrão do bucket. O padrão é "true", e o invocador é o DONO do bucket.
maxZoom Resolução máxima e zoom máximo O nível máximo de zoom dos blocos do mapa a serem exportados.
escalonar Resolução máxima e escala máxima A resolução máxima da imagem em metros por pixel, como uma alternativa a "maxZoom". A escala será convertida para o nível máximo de zoom mais adequado no equador.
minZoom Resolução máxima e zoom mínimo O nível mínimo de zoom opcional dos blocos do mapa a serem exportados. Assume zero como padrão.
região N/A Um anel linear, polígono ou coordenadas que representam a região a ser exportada. Consulte a documentação para mais detalhes.
skipEmptyTiles N/A Se verdadeiro, pule a gravação de blocos de mapa vazios (ou seja, totalmente transparentes). O padrão é "false".
mapsApiKey Chave de API do Google Maps Usado em index.html para inicializar a API Google Maps. Isso remove a mensagem "Somente para fins de desenvolvimento" do mapa.
bucketCorsUris Adicionar acesso a JS (& permitir o site) Uma lista de domínios (por exemplo, https://code.earthengine.google.com) que podem recuperar os blocos exportados por JavaScript (CORS).

Escala e zoom

No exemplo anterior, maxZoom está definido como 13. Os níveis de zoom correspondem a grades de pixels de tamanhos diferentes para mostrar um mapa global. Consulte a referência de coordenadas de pixel para mais detalhes. Devido à curvatura da Terra, a resolução dos pixels em um determinado nível de zoom varia de acordo com a latitude. Especificamente, os metros por pixel diminuem em um fator de cos(latitude). A tabela a seguir mostra metros por pixel, em cada nível de zoom, no equador para a projeção de Mercator do Google:

Nível de zoom Tamanho do pixel (no equador) Nível de zoom Tamanho do pixel (no equador)
0 156 km 10 152 m
1 78 km 11 76 m
2 39 km 12 38 m
3 20 km 13 19 m
4 10 km 14 9,6 m
5 4,9 km 15 4,8 m
6 2,4 km 16 2,4 m
7 1,2 km 17 1,2 m
8 611 m 18 0,6 m
9 305 m 19 0,3 m
20 0,15 m

Observe na tabela anterior que o maxZoom definido no exemplo corresponde a 19 metros no equador, menor em latitudes mais altas. Isso é menor que a resolução nominal de 30 segundos de arco por pixel da imagem de entrada. Como resultado, o mapa exibido na saída index.html pode ser ampliado até que os pixels na resolução nativa fiquem visíveis no mapa. Para limitar a exibição do mapa à resolução nativa de pixels, defina maxZoom como um valor que corresponda à resolução nativa ou menor.



Diretrizes específicas da plataforma

Confira abaixo algumas plataformas em que você pode visualizar e usar blocos de mapa. Cada seção indica quais configurações são necessárias para que os blocos funcionem com essa plataforma e uma cópia do código de exemplo com os parâmetros necessários.

Como usar blocos de mapa no Earth Engine (editor de código ou apps do EE)

Se você quiser exportar blocos de mapa apenas para reutilização no Google Earth Engine ou nos apps do EE, defina o "Nível de acesso" como "Acessível publicamente" e o "Nível de acesso JS" (na caixa de diálogo da tarefa) como "Adicionar acesso ao Earth Engine" ou "Adicionar acesso público". Como alternativa, defina estes parâmetros no código:

writePublicTiles: true,
bucketCorsUris: ['https://code.earthengine.google.com','https://*.earthengine.app']

Depois de exportar os blocos, eles vão ficar acessíveis no Earth Engine.

Editor de código (JavaScript)

// --- Export Map Tiles for use in EE ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEE',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: ['https://code.earthengine.google.com','https://*.earthengine.app']
});

Configuração do Python

Consulte a página Ambiente Python para informações sobre a API Python e o uso de geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Export Map Tiles for use in EE ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEE',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=[
        'https://code.earthengine.google.com',
        'https://*.earthengine.app',
    ],
)
task.start()

Como visualizar uma visualização do Google Maps

Para visualizar os blocos do mapa no Google Maps, acesse a pasta de saída no Google Cloud Storage e abra o arquivo "index.html" no navegador. Isso vai abrir um mapa de página inteira mostrando seus blocos no Google Maps usando a API Maps JavaScript da Plataforma Google Maps, como este: index.html. Uma exportação básica resulta em blocos do mapa-múndi esmaecidos e com a marca d'água "Somente para fins de desenvolvimento". Para evitar isso e mostrar os blocos de mapa-base padrão do Google, gere uma chave de API e a inclua nas configurações de exportação.

Se você fornecer uma chave de API no momento da exportação, essa página de visualização vai ser pública, poderá ser incorporada a outras páginas e não exigirá que o espectador seja um usuário registrado do Earth Engine.

Editor de código (JavaScript)

// --- Export Map Tiles for use with Map Preview ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForMapPreview',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  mapsApiKey: 'fakeMapsApiKey012345' // replace with a valid API Key
});

Configuração do Python

Consulte a página Ambiente Python para informações sobre a API Python e o uso de geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Export Map Tiles for use with Map Preview ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForMapPreview',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    mapsApiKey='fakeMapsApiKey012345',  # replace with a valid API Key
)
task.start()

Como conferir uma visualização do Google Earth

Para visualizar os blocos do mapa no Google Earth na Web, exporte os blocos com o nível de acesso definido como "Acessível publicamente". Em seguida, acesse a pasta de saída no Google Cloud Storage, abra o arquivo "earth.html" no navegador, como este: earth.html e clique no botão "Abrir no Google Earth" que aparece. Isso vai abrir o Google Earth e mostrar seus blocos no mapa 3D. É recomendável também definir o nível de "Acesso ao JS" como "Acessível publicamente", o que permite usar os blocos no Google Earth sem o arquivo de visualização (que usa um servidor proxy se os blocos não tiverem as configurações de acesso ao JS/CORS necessárias).

Para fazer o download de um arquivo KML que contém um link para seus dados, clique no menu de três pontos no Google Earth e selecione "Exportar como arquivo KML". Observação:o arquivo KML gerado dessa forma NÃO é compatível com o Google Earth Pro (a versão para computador do Google Earth).

Editor de código (JavaScript)

// --- Export Map Tiles for use with Earth Preview ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEarthPreview',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: []  // leaving blank is ok for Earth Preview only
  // for direct use in Earth, set to: ['https://earth.google.com']
  // or set to public: ['*'] (risk of misuse)
});

Configuração do Python

Consulte a página Ambiente Python para informações sobre a API Python e o uso de geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Export Map Tiles for use with Earth Preview ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEarthPreview',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=[],  # leaving blank is ok for Earth Preview only
    # for direct use in Earth, set to: ['https://earth.google.com']
    # or set to public: ['*'] (risk of misuse)
)
task.start()

Publicação com a Plataforma Google Maps (APIs do Maps)

Para criar um conjunto de blocos de mapa prontos para publicação pública na Plataforma Google Maps, você precisa ter ou criar uma chave de API e verificar se o nível de acesso está definido como "Acessível publicamente". Dependendo de como o aplicativo da API Maps acessa os blocos, talvez seja necessário definir um "Nível de acesso ao JS" adequado para o site. Depois de exportar os blocos, a saída na guia "Task" do editor de código vai fornecer um URL para os blocos com as variáveis adequadas para uso com a API Google Maps, por exemplo: https://storage.googleapis.com/my_bucket/my_test_tiles/{Z}/{X}/{Y}

Editor de código (JavaScript)

// --- Export Map Tiles for use with Maps Platform APIs ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForMapsPlatform',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: ['*'],  // '*' = All domains = risk of misuse
  // For better protection, specify the domain(s) where the
  // tiles will be used, eg: ['https://mysite.mydomain.com']
  mapsApiKey: 'fakeMapsApiKey012345' // replace with a valid API Key
});

Configuração do Python

Consulte a página Ambiente Python para informações sobre a API Python e o uso de geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Export Map Tiles for use with Maps Platform APIs ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForMapsPlatform',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=['*'],  # '*' = All domains = risk of misuse
    # For better protection, specify the domain(s) where the
    # tiles will be used, eg: ['https://mysite.mydomain.com']
    mapsApiKey='fakeMapsApiKey012345',  # replace with a valid API Key
)
task.start()

Publicação no Google Earth (na Web)

Para criar um conjunto de blocos de mapa para publicação pública no Google Earth, defina o nível de acesso como "Acessível publicamente" e defina o nível de acesso do JS para permitir "https://earth.google.com" (ou "Acessível publicamente"). Depois de exportar, você pode visualizar os arquivos no Google Earth usando o arquivo earth.html no diretório de exportação (veja acima).

Editor de código (JavaScript)

// --- Export Map Tiles for use with Google Earth web ---
// Use image setup code from example at top of the page.
// Set up Export task.
Export.map.toCloudStorage({
  image: landsatImage,
  description: 'mapTilesForEarthWeb',
  bucket: 'yourBucketName',  // replace with your GCS bucket name
  fileFormat: 'auto',
  maxZoom: 13,
  region: exportRegion,
  writePublicTiles: true,
  bucketCorsUris: ['https://earth.google.com']
  // ['*'] will also work, but risks misuse
});

Configuração do Python

Consulte a página Ambiente Python para informações sobre a API Python e o uso de geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# --- Export Map Tiles for use with Google Earth web ---
# Use image setup code from example at top of the page.
# Set up Export task.
task = ee.batch.Export.map.toCloudStorage(
    image=landsat_image,
    description='mapTilesForEarthWeb',
    bucket='yourBucketName',  # replace with your GCS bucket name
    fileFormat='auto',
    maxZoom=13,
    region=export_region,
    writePublicTiles=True,
    bucketCorsUris=['https://earth.google.com'],
    # ['*'] will also work, but risks misuse
)
task.start()

Depois de exportar os blocos, adicione-os a um projeto no Google Earth Web. A saída na guia "Tarefas" do editor de código (mostrada abaixo) fornece o URL dos seus blocos com as variáveis adequadas para uso no Google Earth, por exemplo: https://storage.googleapis.com/my_bucket/my_test_tiles/$[level]/$[x]/$[y]

Gerar URLs de uma tarefa de exportação de blocos
Saída de URLs de uma tarefa de exportação de blocos.

Para usar isso no Earth Web, crie um elemento de sobreposição de blocos e adicione este URL como o "URL da sobreposição". Se o conjunto de dados não for global e você quiser evitar erros de solicitação de blocos para blocos inexistentes, abra a seção "Opções de sobreposição" e ajuste os quatro parâmetros de cobertura de blocos para corresponder às extensões dos blocos exportados.

Blocos de mapa mostrados no Google Earth Web
Map Tiles exibidos no Google Earth Web.

Publicação em outras plataformas de mapeamento

Ao exportar blocos para uso com outras plataformas ou aplicativos, as configurações necessárias vão depender de como eles acessam os blocos. Para tornar os blocos o mais acessíveis possível, defina o nível de acesso como "Acessível publicamente" e o nível de acesso do JS como "Acessível publicamente".



Gerar uma chave de API da Plataforma Google Maps

Se você planeja usar seus blocos de mapa com a Plataforma Google Maps ou quer visualizar no Maps sem o mapa base restrito do desenvolvedor, é necessário ter ou gerar uma chave de API da Plataforma Google Maps e incluí-la nas configurações de exportação ou adicioná-la aos sites depois. Isso não é necessário para usar o Google Earth.

Quando você exporta blocos de mapa do Earth Engine, geramos uma página HTML de exemplo armazenada no diretório de saída para que você possa visualizar os blocos usando a API JavaScript da Plataforma Google Maps. Você pode fornecer uma chave de API da Plataforma Google Maps no momento da exportação, que será usada para as chamadas de API do visualizador de exemplo.

Para gerar uma chave de API da Plataforma Google Maps agora, siga estas quatro etapas:

  • Clique no botão "Criar chave de API da Plataforma Google Maps" abaixo.
  • Selecione o projeto do Cloud para a chave de API e clique em "PRÓXIMA".
  • Clique em para copiar a nova chave e colá-la na caixa de diálogo "Export map" no editor de código.
  • (Recomendado) Clique no link do console de API abaixo da nova chave para definir as restrições de referenciador. Consulte Restrições de redirecionamento e aplicativo para mais detalhes.

Criar uma chave de API da Plataforma Google Maps

Digite o nome do projeto Chave pronta

Como adicionar restrições de referenciador a uma chave de API

Ao adicionar uma chave de API, as restrições de referenciadores garantem que apenas os apps designados possam usar a chave. É possível definir ou editar restrições de redirecionamento a qualquer momento. Para isso, acesse a página Credentials no console do Cloud e siga estas etapas:

  • Verifique se o nome do projeto correto está selecionado no menu suspenso na parte de cima da tela.
  • Clique na chave da API da Plataforma Google Maps gerada acima para conferir os detalhes dela.
  • Selecione Referenciadores HTTP (sites) e especifique o bucket do Cloud Storage especificado em Export.map.toCloudStorage usando o seguinte modelo: https://storage.googleapis.com/{bucket}/*
  • Clique em Salvar. O indicador "Salvando…" vai aparecer.
Adicionar referenciadores