Perguntas frequentes

Perguntas gerais

Estou com um problema, preciso de ajuda!

Poste uma pergunta seguindo este guia, fornecendo o máximo de informações possível (consulte o guia do Stack Overflow para fazer boas perguntas). Isso geralmente significa que:

  • enviar um link para um script no Editor de código (clique no botão "Gerar link" para acessá-lo);

  • compartilhar recursos necessários para executar o script

  • para tarefas em lote com falha, informe o ID da tarefa com falha. Os IDs de tarefa são assim: 4C25GIJBMB52PXTEJTF4JLGL. Eles podem ser encontrados na guia "Tarefa" do Editor de Código. Saiba mais.

Onde posso ler sobre a arquitetura do Earth Engine?

Consulte este artigo: Gorelick et al. 2017.

Consulte as páginas EDU e Recursos de treinamento.

Confira este curso sem custo financeiro do EE de Ujaval Gandhi, que inclui um vídeo com uma introdução ao sensoriamento remoto.

Programação do Earth Engine

Quais são alguns erros comuns de programação?

Consulte o guia de depuração.

Por que estou recebendo um erro "... is not a function"?

Esse erro ocorre quando o Earth Engine não consegue encontrar o método chamado. Confira as seguintes causas comuns:

Ortografia ou diferenciação de maiúsculas de minúsculas: os métodos diferenciam maiúsculas de minúsculas. Verifique a ortografia na Referência da API.

Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)

Conversões de tipo ausentes: os valores retornados de funções como .get() são instâncias genéricas de ee.ComputedObject e precisam ser convertidos explicitamente. Consulte Conversão de tipo de objeto desconhecido.

Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)

Mistura de métodos de cliente e servidor: verifique se você não está usando métodos padrão do JavaScript ou do Python (como .push() ou .append()) em objetos do Earth Engine. Consulte Evitar misturar funções de cliente e servidor.

Error: list.push(4) or list.append(4) -> Correct: list.add(4)

Métodos indisponíveis: se o objeto estiver digitado corretamente e o método existir na documentação ou tiver funcionado anteriormente, mas agora falhar, informe um bug.

Por que não posso usar matemática básica como ee.Image("image") * 2?

No EE, não é recomendável misturar objetos ou operações do lado do servidor e do lado do cliente. Todas as operações em objetos do EE são realizadas do lado do servidor. Os cálculos do lado do cliente não vão funcionar como esperado. Consulte esta página para mais detalhes.

Como posso usar loops for ou instruções if/else?

A programação do Earth Engine é feita usando uma linguagem funcional. Portanto, loops e operações condicionais precisam ser expressos usando conceitos equivalentes, como map ou filter. Consulte esta página para mais detalhes.

Como faço para mostrar rótulos de texto na minha imagem ou vídeo?

Não há suporte integrado para rótulos de texto, mas você pode:

Posso usar algumas paletas de cores padrão?

Use um pacote JS de terceiros ee-palettes.

Como faço para criar meu próprio site que usa o Earth Engine?

Use os Apps do Earth Engine para aplicativos básicos. Em casos mais complexos, é possível criar apps do App Engine com tecnologia do EE.

Como funcionam os IDs de mapa?

Os IDs de mapa (chamados de mapid em toda a API) são chaves que permitem que os clientes busquem blocos de mapa. Cada ID é um hash criado ao fornecer uma expressão de imagem ao endpoint getMapId. Os IDs resultantes são chaves que apontam para a expressão de imagem e as credenciais do usuário que serão usadas para gerar blocos em uma etapa posterior.

Para solicitar blocos de mapa, é preciso especificar o local do bloco (x, y, zoom) e o mapid (a chave para a imagem e as credenciais). O mesmo ID pode ser reutilizado para carregar vários blocos de mapa. Não há limites para a reutilização de chaves mapid, mas elas expiram após algumas horas. Não publicamos prazos específicos sobre quanto tempo eles persistem, mas qualquer código que você escrever precisa ser resiliente à expiração do ID.

A criação desses IDs envolve o armazenamento de uma pequena quantidade de dados e a validação de credenciais. Por isso, é melhor reutilizá-los pelo maior tempo possível. Não há uma cota de API especificamente associada ao endpoint getMapId, mas qualquer fluxo de trabalho que envolva a criação de objetos mapid a uma taxa próxima à taxa de busca de blocos provavelmente está fazendo algo errado. O Earth Engine não tem um endpoint de API para remover, listar ou gerenciar esses IDs, já que são recursos temporários.

Por que ee.Algorithms.If() mostra os casos verdadeiro e falso?

function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());

O algoritmo If() funciona como qualquer outro algoritmo no Earth Engine, já que todos os argumentos precisam ser avaliados antes que o algoritmo possa ser executado. O algoritmo recebe os resultados de trueCase e falseCase e, em seguida, escolhe e retorna um com base no argumento condition, mas os dois caminhos precisam ser executados para que esses valores sejam transmitidos ao algoritmo em primeiro lugar.

Recebo o erro "O payload da solicitação excede o limite"

Você está tentando enviar uma solicitação muito grande ao Earth Engine. Isso geralmente acontece quando o código usa muitos loops "for" do lado do cliente ou cria uma FeatureCollection com muitos objetos de geometria. Nesse caso, em vez de criar essas geometrias no script, gere um arquivo CSV que as contenha e faça upload dele para um recurso de tabela.

Qual é a diferença entre o ee.Image.clip() e o ee.Filter.bounds()?

Consulte esta conversa do GIS Stack Exchange. A função ee.Image.clip() mascara pixels que não se cruzam com um determinado ee.Geometry ou ee.Feature, tornando-os transparentes em visualizações e excluídos em cálculos. É como se você estivesse recortando pixels de uma imagem.

A função ee.Filter.bounds() filtra objetos ee.Image de um ee.ImageCollection com base na interseção de imagens com um ee.Geometry ou ee.Feature. Ele é usado para limitar o escopo de uma análise apenas às imagens que cruzam uma determinada região, o que ajuda a otimizar as expressões.

Como converter pixels de imagem em coleções de elementos, com um elemento por pixel?

Use a função ee.Image.sample(). Confira exemplos de uso na página de referência da API da função.

Qual é a diferença entre ee.ImageCollection.merge() e ee.ImageCollection.combine()?

A função ee.ImageCollection.merge() mescla todas as imagens de duas coleções em uma única coleção, independentemente de as respectivas imagens terem bandas, metadados, CRS ou escala coincidentes. É a união de duas coleções. O método combine() combina as bandas de imagens correspondentes de duas coleções em uma única coleção. As imagens correspondentes compartilham o mesmo ID (propriedade system:index). É uma mesclagem interna de duas coleções com base no ID da imagem, em que as bandas de imagens correspondentes são combinadas. Para imagens correspondentes, as bandas da imagem secundária são anexadas à imagem principal (a substituição é opcional). Se não houver imagens correspondentes, uma coleção vazia será retornada.

Como filtrar coleções de imagens em vários intervalos de datas?

Consulte esta conversa do GIS Stack Exchange. Use merge() em várias coleções ou use ee.Filter.or().

Como criar uma caixa delimitadora em torno de um determinado ponto?

// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);

// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
  ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
  ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
  var box = feature.buffer(30000).bounds();
  return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);

Data Catalog

Você pode adicionar o conjunto de dados X?

Registre um bug de solicitação de conjunto de dados seguindo o guia de solicitação de conjunto de dados.

Também é possível fazer upload de dados para sua pasta inicial do Earth Engine. Consulte Como importar dados rasterizados e Como importar dados de tabelas.

Um conjunto de dados atual tem uma nova versão

Registre um bug no conjunto de dados seguindo o guia de solicitação de conjunto de dados e indique que você está solicitando uma atualização do conjunto de dados.

Um conjunto de dados atual não foi atualizado ou está sem recursos

Antes de informar um problema, verifique, se possível, se os recursos selecionados realmente existem no site do provedor do conjunto de dados. Consulte o guia sobre imagens ausentes para mais detalhes.

Se você estiver procurando um recurso filtrando um ImageCollection, verifique se os filtros não são muito restritivos.

Em especial, observe que:

  • O Sentinel-2 SR (dados de nível 2) não foi produzido pela ESA para as primeiras cenas de nível 1.

  • O Landsat não tem cobertura mundial antes de 2000.

Um conjunto de dados atual tem valores incorretos

Poste no fórum de desenvolvedores. Inclua um script que amplie a resolução original do recurso e deixe claro quais valores estão errados. Explique exatamente onde você observou o valor alternativo.

Onde mais posso perguntar sobre conjuntos de dados?

Para perguntas sobre conjuntos de dados da NASA, consulte o fórum de dados da Terra da NASA.

Para dúvidas sobre as caixas de ferramentas que operam em conjuntos de dados do Copernicus, consulte os fóruns S1, S2 e S3.

Qual é o tamanho do catálogo do EE?

Em outubro de 2023, o catálogo continha mais de mil conjuntos de dados. O tamanho em disco é de mais de 90 petabytes (depois de considerar a compactação sem perdas).

Com que frequência os dados no EE são atualizados?

Normalmente, todos os conjuntos de dados em andamento são atualizados pelo menos diariamente, embora nem todos tenham novos dados todos os dias. Alguns conjuntos de dados são atualizados várias vezes ao dia. No entanto, não há uma política que garanta a presença dos recursos mais recentes no catálogo.

Como faço para ver o conteúdo do catálogo do EE de forma programática?

A lista de conjuntos de dados é exportada no formato STAC para um bucket do Google Cloud Storage gs://earthengine-stac. O arquivo de entrada é catalog.json.

Posso usar dados ou imagens do Google Maps para análise?

O Google não licencia nem vende dados de mapas de base para análise.

Como posso encontrar a data em que um recurso foi enviado?

A propriedade de recurso 'system:version' é o carimbo de data/hora de ingestão, formatado como microssegundos desde a época Unix. Veja um exemplo que converte o carimbo de data/hora de ingestão de uma imagem do Landsat em um formato legível por humanos.

var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));

O catálogo do Earth Engine tem metadados JSON-LD?

Sim, os metadados JSON-LD estão incorporados nas páginas HTML do catálogo. Por exemplo, a página do Sentinel-2 contém o seguinte bloco:

<script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [{
      "@type": "ListItem",
      "position": 1,
      "name": "Earth Engine Data Catalog",
      "item": "https://developers.google.com/earth-engine/datasets"
    },{
      "@type": "ListItem",
      "position": 2,
      "name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
      "item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
    }]
  }
  </script>

Landsat

Como o algoritmo simpleComposite é implementado?

A implementação do lado do servidor é equivalente a este código JavaScript.

Como posso criar composições sem nuvens com base nos dados de reflectância de superfície do Landsat?

Os dados do Landsat nível 2 (reflectância de superfície) têm várias bandas de qualidade que podem ser usadas para mascarar nuvens e outros artefatos de imagem indesejados. Um exemplo de uso dessas bandas para processar imagens SR do Landsat 8 e criar uma composição mediana sem nuvens é fornecido neste post do GIS Stack Exchange. O mesmo procedimento é usado para criar um composto sem nuvens para uso em exemplos de classificação supervisionada no Guia do desenvolvedor.

A harmonização da reflectância de superfície do Landsat entre sensores é necessária?

Roy et al., 2016 incluiu uma análise das diferenças de reflectância entre o TOA do Landsat 7-8 e a reflectância da superfície. Eles publicaram os coeficientes OLS e RMA para que os leitores pudessem transformar os valores de reflectância dos dados de um sensor em outro. A linha final do artigo afirma: "Embora as diferenças entre os sensores sejam muito pequenas, elas podem ter um impacto significativo dependendo da aplicação dos dados do Landsat". No entanto, essa análise foi baseada em dados pré-coleta.

As melhorias feitas durante o reprocessamento da Coleção 1 e da Coleção 2 podem influenciar a relação entre os sensores, mas, até onde sabemos, não houve análises semelhantes às de Roy et al. (2016) para os dados da Coleção 1 ou da Coleção 2. Apesar de não haver uma análise formal, parece haver um consenso geral entre os usuários influentes do Landsat de que nenhuma correção é necessária para os dados da Coleção 2, Nível 2 (reflectância da superfície). Por exemplo, em uma resposta a uma pergunta sobre a necessidade de harmonização do nível 2 da coleção 2, Mike Wulder, da equipe de ciência do Landsat, observou que, dependendo da natureza da aplicação de interesse (incluindo mapeamento de cobertura do solo e detecção de mudanças), os produtos de reflectância de superfície da coleção 2 são altamente adequados e confiáveis, sem a necessidade de ajuste entre sensores.

Como posso mascarar nuvens e sombras de nuvens em imagens MSS?

O módulo msslib de terceiros para o editor de código JavaScript inclui uma implementação do algoritmo MSScvm, além de outras funções úteis para explorar e preparar dados de MSS.

Gerenciamento de dados

Quem é o proprietário dos dados que eu envio?

De acordo com os Termos de Serviço do Earth Engine, os clientes são os proprietários dos dados que enviam para o Earth Engine.

Não consigo fazer upload de dados.

Verifique o status da tarefa de upload no painel "Tarefas", no canto superior direito do Editor de código. Também é possível acessar a página de tarefas dedicada.

Se não houver uma tarefa, é provável que você tenha tentado fazer upload do arquivo pelo Editor de código, mas, devido a um problema de rede, o upload não foi concluído e a tarefa não foi criada. Tente usar outro navegador ou computador.

Se houver uma tarefa com falha, examine o erro que ela mostra. Se não houver uma mensagem de erro específica, verifique se o arquivo não está corrompido executando gdalinfo para arquivos rasterizados ou ogr2ogr para arquivos vetoriais. Esses comandos vão tentar ler todos os dados dos arquivos de origem e mostrar erros se os arquivos estiverem corrompidos.

Exemplo de chamada gdalinfo:

gdalinfo -mm -stats -checksum file.tif

Exemplo de chamada ogr2ogr que vai converter in.shp em out.csv:

ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp

Se o arquivo parecer válido, poste o ID da tarefa com falha como texto (não como uma captura de tela) na lista de e-mails para desenvolvedores. Os IDs de tarefa têm este formato: 4C25GIJBMB52PXTEJTF4JLGL. Se possível, torne o arquivo de origem legível publicamente. Se for um arquivo particular, compartilhe-o apenas com earthengine@google.com se quiser que a equipe do Earth Engine o analise. Se não for possível compartilhar o arquivo de origem, forneça pelo menos a saída de gdalinfo -mm -stats -checksum.

Se o Earth Engine não for compatível com uma determinada projeção, será necessário reprojetar os dados antes de fazer o upload usando, por exemplo, gdalwarp.

Como faço upload de um arquivo em NetCDF ou outro formato raster não compatível?

Somente GeoTIFFs podem ser enviados para o Earth Engine. Outros formatos compatíveis com GDAL podem ser convertidos em GeoTIFFs usando gdal_translate. Exemplo:

gdal_translate -co COMPRESS=DEFLATE file.nc file.tif

Alguns arquivos NetCDF ou HDF consistem em vários subconjuntos de dados que podem ser descobertos com gdalinfo. Nesse caso, o comando gdal_translate será semelhante a este (observe o caminho entre as aspas duplas):

gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif

Às vezes, os arquivos NetCDF não têm uma projeção que a GDAL reconheça. Nesse caso, você precisaria definir a projeção e a extensão espacial na linha de comando gdal_translate. Exemplo:

gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid

Quais algoritmos de compactação posso usar para GeoTIFFs enviados?

Para upload, os GeoTIFFs podem ser compactados com DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP ou ZSTD. Para leitura de COG em tempo real, use DEFLATE, JPEG, LZW, PACKBITS, ZSTD ou nenhuma compactação (consulte as práticas recomendadas de COG). O ZSTD é uma boa opção geral, porque é rápido para descompactar e oferece uma boa compactação da maioria das imagens.

Para aplicar a compactação ZSTD ao usar gdal_translate, adicione estas opções. Se os dados tiverem valores de ponto flutuante, mude PREDICTOR para 3. Para arquivos que você planeja registrar como COGs em vez de fazer upload, consulte o guia de registro de COG.

gdal_translate in.tif out.tif \
  -co BIGTIFF=YES \
  -co TILED=YES \
  -co BLOCKXSIZE=512 \
  -co BLOCKYSIZE=512 \
  -co COMPRESS=ZSTD \
  -co PREDICTOR=2 \
  -co ZSTD_LEVEL=16 \
  -co INTERLEAVE=BAND \
  -co NUM_THREADS=ALL_CPUS

Minha ingestão de raster está em execução há dias e não foi concluída.

Usando gdalinfo, verifique se o arquivo tem a seguinte opção GDAL definida: INTERLEAVE=PIXEL. Para arquivos com essa opção e muitas bandas, a ingestão pode nunca terminar porque o layout desses arquivos torna as leituras muito lentas.

Tente converter esses arquivos para o layout intercalado por banda antes de fazer o upload:

gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif

As imagens rasterizadas que enviei não correspondem ao mapa de base.

Se os dados estiverem ligeiramente deslocados do mapa de base, é provável que a projeção tenha um datum incorreto (suposição sobre a forma da Terra). Isso acontece com mais frequência com a projeção sinusoidal, que não pode ser totalmente codificada nos metadados do GDAL. Quando você souber qual deve ser a projeção de destino (por exemplo, SR-ORG:6974 para arquivos que usam a projeção sinusoidal MODIS), defina a flag --crs durante o upload de linha de comando ou o campo crs do manifesto de upload.

Se os dados parecerem muito distorcidos ou no lugar completamente errado, é provável que a projeção ou a transformação afim esteja errada.

Meu raster só aparece no hemisfério oriental.

Provavelmente, você fez upload de um raster global que abrange o intervalo de longitude [0, 360]. No entanto, o Earth Engine exige que os rasters estejam no intervalo [-180, 180]. Troque as metades esquerda e direita do raster antes da ingestão. Confira estas sugestões do GIS Stack Exchange.

Por que minha imagem de classificação ingerida parece manchada?

Você provavelmente usou a política de pirâmide padrão MEAN. Para imagens de classificação, use a política de pirâmide MODE. Para imagens de controle de qualidade/máscara de bits, use a política de pirâmide SAMPLE.

Recebo o seguinte erro: No data value -128.0 cannot be applied to band #0 of type Short<0, 255>.

O GDAL não pode tratar bandas de byte único como contendo números inteiros com sinal, então ele lê essas bandas como números inteiros sem sinal. Isso entraria em conflito com valores negativos sem dados.

Se os valores forem inteiros com sinal, use o upload de manifesto e adicione o seguinte à seção do conjunto de blocos que contém seu arquivo: data_type: "INT8"

Se os valores forem números inteiros sem sinal, o arquivo terá um valor nodata inválido. É possível substituí-lo no upload pelo valor de dados correto (ou por um valor que nunca ocorre, se houver). Também é possível usar gdal_translate -a_nodata para alterar o valor nodata ou gdal_edit.py -unsetnodata para removê-lo.

Como faço para fazer upload de um arquivo no GeoJSON ou em outro formato vetorial não compatível?

Use ogr2ogr para converter formatos compatíveis com OGR em CSV ou SHP. Exemplo:

or2ogr -f "ESRI Shapefile" file.shp file.kml

Em uploads de CSV, a coluna de geometria pode conter GeoJSON.

Quero fazer upload de dados usando Python ou fazer upload de vários arquivos de uma só vez.

Use o upload de linha de comando. Esses uploads exigem que os arquivos de origem sejam colocados primeiro em um bucket do GCS (Google Cloud Storage). O uso do GCS não custa nada se você permanecer dentro dos limites do nível sem custo financeiro. Consulte a página de preços.

Quero fazer upload de um mosaico raster grande dividido em vários blocos.

Se todos os arquivos tiverem a mesma projeção e tamanho de pixel, basta fazer upload deles juntos no mesmo recurso. Eles serão transformados em mosaico automaticamente.

Se os arquivos tiverem projeções ou tamanhos de pixel diferentes, não será possível criar um mosaico em um único recurso de rasterização. Em vez disso, faça upload de cada bloco como um recurso separado no mesmo ImageCollection que pode ser transformado em mosaico usando ImageCollection.mosaic().

Estou tentando fazer upload de um mosaico e recebo erros sobre blocos incompatíveis.

Os blocos para mosaicos rasterizados do Earth Engine precisam ter a mesma projeção e tamanho de pixel. Além disso, os blocos precisam estar alinhados exatamente nos limites de pixel.

Estou tentando fazer upload de um arquivo de um bucket do GCS, mas o Earth Engine não o encontra.

Talvez você tenha usado Contas do Google diferentes para o upload do GCS e para se conectar ao Earth Engine. Verifique se o arquivo do GCS pode ser lido pela conta que você usa para se conectar ao Earth Engine. Se o login múltiplo do navegador causar confusão, conecte-se ao Earth Engine em uma janela anônima do navegador.

Quero exportar muitos recursos de uma só vez.

É preciso exportar cada imagem separadamente.

Quero mover ou excluir um Folder ou um ImageCollection com um único comando.

earthengine rm -r exclui uma pasta ou coleção e tudo o que há nela, mas um recurso por vez. Portanto, uma coleção grande pode levar horas. Para acelerar o processo, exclua os filhos em paralelo de um script e, em seguida, exclua o pai (consulte Como trabalhar com coleções grandes). A mesma abordagem funciona para qualquer coleção ou pasta simples. Uma pasta que contém outras pastas ou coleções precisa ser esvaziada de baixo para cima, já que um contêiner não pode ser excluído até que esteja vazio. Para mover, use mv da mesma maneira.

Quero acessar diretamente os dados do Earth Engine de fora do EE.

O QGIS tem um plug-in do Earth Engine.

A GDAL tem um driver do Earth Engine.

Outros sistemas podem usar a API REST do EE.

Quero atualizar uma parte do meu recurso do Earth Engine sem precisar reingeri-lo completamente.

Não é possível atualizar dados rasterizados ou vetoriais enviados para o EE. Somente as propriedades de metadados do recurso podem ser atualizadas. A exceção são os recursos com suporte a COG, que podem ser apontados para um arquivo atualizado do Cloud Storage registrando-os novamente com a substituição ativada.

Estou perdendo o acesso à minha conta. O que faço com meus recursos?

Se as políticas da conta original permitirem a transferência de dados, compartilhe seus recursos com outra conta e copie os recursos para que sejam de propriedade da nova conta. Use o utilitário de cópia de linha de comando se houver muitos recursos para mover.

Se uma conta for excluída, os recursos dela não poderão mais ser acessados.

Minha imagem exportada está no lugar errado.

Para algumas projeções, como sinusoidal ou cônica, os arquivos GeoTIFF às vezes não podem armazenar todos os parâmetros de projeção necessários. Isso resulta em um arquivo exportado que aparece no lugar errado quando visualizado em ferramentas de GIS para computador ou reingerido no EE.

Para corrigir isso, especifique um parâmetro de exportação crs que funcione bem com arquivos GeoTIFF. Por exemplo, use o código EPSG para a zona UTM que contém sua área de interesse.

Os recursos de coleção de elementos exportados não preservam as propriedades que defini.

Nenhuma função Export.table.* preserva as propriedades no nível da tabela na saída. Muitos formatos de saída (por exemplo, CSV, GeoJSON) não são compatíveis com esses metadados. A função Export.table.toAsset pode ser compatível com propriedades no nível da tabela, mas não no momento.

As tabelas exportadas para o Drive como formato CSV são convertidas para o formato XLSX.

Dependendo das configurações do Google Drive, as tabelas CSV exportadas do Earth Engine podem ser convertidas em arquivos XLSX com efeitos indesejados, como conversões de tipo de dados. Siga estas etapas para modificar o comportamento das exportações seguintes.

  1. No Google Drive na Web, clique no ícone de engrenagem "Configurações" no canto superior direito.
  2. Clique em "Configurações".
  3. Role até "Converter arquivos enviados para o formato do editor do Google Docs" e desmarque essa opção.

GeoTIFFs otimizados para nuvem (COGs)

Para mais informações, consulte a visão geral do COG e o guia de registro do COG.

Compartilhei um recurso com suporte do COG, mas meus colaboradores recebem um erro de permissão.

Um recurso com suporte de COG é um ponteiro para arquivos no bucket do Cloud Storage. Portanto, os colaboradores precisam de acesso de leitura tanto ao recurso do Earth Engine quanto ao bucket. No bucket, conceda a eles os papéis Leitor de objetos do Storage e Leitor de buckets do Storage. Um erro de permissão em um recurso que eles podem ver geralmente significa que um dos dois está ausente. Consulte Configurar permissões.

Qual local de bucket do Cloud Storage devo usar para armazenar recursos COG?

Apenas alguns locais dos EUA são aceitos, e o Earth Engine rejeita solicitações de registro e leitura de buckets em qualquer outro lugar. Consulte os locais de bucket compatíveis.

Substituí um arquivo COG no Cloud Storage. Por que o recurso não é carregado ou ainda mostra os dados antigos?

Quando você registra um COG, o Earth Engine fixa a geração de objetos (versão) do arquivo. Portanto, substituir o arquivo no local não atualiza o recurso. Registre novamente o recurso com o mesmo nome e a substituição ativada. Não é necessário excluí-lo primeiro. Consulte Como atualizar, substituir e excluir recursos com suporte a COG.

Como saber para qual versão de um arquivo meu recurso com suporte do COG aponta?

Os metadados do recurso (ee.data.getAsset()) mostram a geração fixada como um sufixo no URI do arquivo. Consulte gerações de objetos.

O que acontece se eu excluir um arquivo COG no Cloud Storage, mas não o recurso do Earth Engine, ou vice-versa?

Eles são independentes. A exclusão do recurso do Earth Engine deixa os arquivos no Cloud Storage intactos, e a exclusão do arquivo deixa o recurso no lugar, mas normalmente torna os pixels ilegíveis. Consulte ciclos de vida independentes.

Qual é a maneira mais rápida de excluir ou substituir um ImageCollection grande com suporte a COG?

Não há exclusão em lote ou recursiva na API Earth Engine, e earthengine rm -r exclui um recurso por vez. Se você estiver substituindo imagens, registre-as novamente com a substituição ativada em vez de excluí-las. Se estiver excluindo, use um script para paralelizar. Consulte Como trabalhar com grandes coleções para ver a abordagem e um script.

Por que meu registro de COG não aparece na guia "Tarefas"?

O registro de um COG é uma chamada de API síncrona que indexa apenas os metadados do arquivo, não um job de ingestão em lote. Portanto, ele não cria uma tarefa. O recurso fica disponível na guia Recursos assim que a chamada é retornada. Consulte Enviar a solicitação de registro.

Posso combinar vários arquivos COG em um único recurso do Earth Engine?

Somente quando cada arquivo contém bandas diferentes da mesma cena: liste cada arquivo como um conjunto de blocos próprio no manifesto e mapeie as bandas para os conjuntos de blocos. Não é possível criar um mosaico de arquivos espacialmente adjacentes em um recurso com suporte a COG. Registre cada arquivo como uma imagem própria em um ee.ImageCollection e chame mosaic(). Consulte as restrições do manifesto.

Quais esquemas de compactação, tamanhos de blocos e tipos de pixel os recursos baseados em COG podem usar?

Consulte as práticas recomendadas para preparar COGs externos e saber mais sobre os esquemas de compactação, tamanhos de blocos e tipos de dados de pixel compatíveis. Os arquivos em formatos de compactação que o Earth Engine não consegue ler diretamente como COGs ainda podem ser enviados como recursos padrão.

Recebo o erro "Não foi possível ler os metadados do TIFF nos primeiros 10.000.000 bytes".

O Earth Engine lê apenas o início de um arquivo ao carregá-lo ou registrá-lo. Imagens grandes com muitos blocos e arquivos truncados excedem esse limite. Consulte como escolher as dimensões do arquivo para saber o limite e como não ultrapassá-lo.

Como o ee.Image.loadGeoTIFF() se diferencia de um recurso registrado quando o arquivo muda?

O ee.Image.loadGeoTIFF() lê a versão atual do arquivo em cada solicitação de cálculo ou bloco de mapa, então ele detecta as substituições (de forma desigual em um mapa, porque os blocos renderizados permanecem em cache). Um recurso registrado sempre fixa a geração com que foi registrado e precisa ser registrado novamente para ver um novo arquivo, mas, em troca, o footprint e os metadados dele são indexados, o que o torna utilizável em grandes coleções. Consulte Como ler COGs do Cloud Storage.

Editor de código

Não consigo fazer login no Editor de Código porque ele me pede para usar a conta errada.

Saia, selecione a conta registrada para usar o Earth Engine na página "Escolher uma conta" e selecione novamente a mesma conta na segunda página "Escolher uma conta para continuar no Editor de código do Earth Engine" (o texto exato pode ser diferente).

Quero fazer uma captura de tela de um mapa global, mas não gosto da projeção Web Mercator.

A projeção de mapa usada no Editor de Código é o Web Mercator ('EPSG:3857'). Ela aumenta o tamanho dos objetos longe do equador, fazendo com que as regiões de alta latitude pareçam muito maiores do que realmente são, em comparação com as regiões próximas ao equador. Não é possível mudar a projeção da tela do mapa do Editor de Código, mas você pode "pintar" uma imagem na projeção que quiser na tela do Web Mercator usando o método ee.Image.changeProj. Consulte a página de referência da API do método para ver um exemplo de exibição de um DEM global no mapa do Editor de Código na projeção de Robinson. Essa técnica só deve ser usada para fins de visualização, já que o inspetor e as ferramentas de desenho do Editor de Código ainda estão operando no Web Mercator.

Meu script não é salvo (Script error: Unknown commit).

Se você receber uma mensagem Script error: Unknown commit ao salvar um script, provavelmente o repositório em que você está salvando está fora de sincronia. A causa desse estado é variável e difícil de identificar. Para resolver o problema, tente atualizar a lista de scripts usando o botão no canto superior direito da guia "Script". Se isso não funcionar, tente criar um novo repositório usando o botão "Novo" na guia "Script" e salve o script nele (talvez seja necessário mover os scripts para o novo repositório do repositório não sincronizado).

Por que estou vendo erros 400 repetidos no editor de código?

Se você estiver recebendo erros 400 repetidos no editor de código, acesse https://myaccount.google.com/connections, encontre "Editor de código do Earth Engine" na lista de apps e serviços, selecione-o e, em seguida, selecione "Excluir todas as conexões que você tem com o editor de código do Earth Engine" e confirme. Em seguida, abra o Editor de Código e faça a autenticação novamente.

Como faço para recuperar scripts e pastas excluídos?

Se você excluir acidentalmente um script ou uma pasta em um repositório, o histórico completo de commits será preservado nos registros do Git nos nossos servidores. É possível restaurar scripts ou pastas excluídos clonando o repositório localmente usando ferramentas de linha de comando padrão do Git.

No entanto, excluir um repositório inteiro (users/username/repository) remove permanentemente o repositório e o histórico de commits do earthengine.googlesource.com, e não pode ser desfeito ou recuperado.

Para instruções detalhadas sobre como gerar credenciais do Git, clonar seu repositório e restaurar arquivos ou pastas excluídos, consulte o guia de migração Recuperação de script e repositório.

Como posso renomear a raiz do meu repositório de scripts?

O diretório raiz do script (users/username) está vinculado ao registro original da sua conta do Earth Engine. Ele não pode ser renomeado diretamente no back-end, porque isso interromperia todos os scripts externos ou projetos de colaboradores que importam seu código modular usando o caminho require('users/username/repository:...').

Se você precisar de um novo namespace, a solução alternativa compatível é migrar seu trabalho para uma nova conta:

  1. Registre uma nova conta do Earth Engine usando sua nova Google Identity, que gera uma raiz users/new_username limpa.
  2. Siga as instruções de migração de repositório para clonar o repositório antigo e enviar o histórico completo para o novo repositório vazio.

Considerações importantes:

  • Módulos públicos: se você tiver módulos públicos de que outras pessoas dependem, recomendamos manter sua conta e seu repositório antigos ativos para não interromper os fluxos de trabalho delas.
  • Scripts particulares: se os scripts forem totalmente particulares, atualize as instruções de importação require() para referenciar o novo caminho do repositório e exclua os repositórios antigos com segurança.