fbpx

Filtro de Categorias

Usando o Google Earth Engine para renderizar camadas de satélite em um mapa

Usando o Google Earth Engine para renderizar camadas de satélite em um mapa

As imagens de satélite contam histórias úteis que não podem ser contadas do solo, como fornecer informações sobre clima e clima, geografia e assentamento humano. Essas informações podem ser vitais para gerenciar cadeias de suprimentos globais, prever e mitigar eventos climáticos extremos e monitorar os impactos ambientais do desenvolvimento humano. Aproveitar essas informações e moldá-las de uma maneira que mostre a história que você está tentando contar pode ser uma ferramenta poderosa em qualquer aplicação geoespacial à qual seja aplicada.

No entanto, para contar histórias poderosas usando imagens de satélite, primeiro você precisa saber quais informações estão disponíveis para você, como acessá-las e renderizar as informações em um mapa. Essas camadas não aparecem magicamente em seu mapa, mas aqui darei uma visão geral passo a passo de como renderizar suas camadas de satélite em um mapa usando o Google Earth Engine.

Google Earth Engine: como você começa? 

Em primeiro lugar, você precisa decidir quais conjuntos de dados você precisa para o seu mapa que complementarão a história que você deseja comunicar. A boa notícia é que  o Google Earth Engine  tem um catálogo de conjuntos de dados de fácil acesso para os usuários.

Há uma grande variedade de conjuntos de dados para escolher, cada um com documentação de acompanhamento sobre como usá-lo. A coleção é compartimentada de forma a agrupar conjuntos de dados semelhantes – por exemplo, todos os conjuntos de dados relacionados ao clima estão listados juntos  aqui .

Nos exemplos que estou fornecendo neste blog, usaremos esses conjuntos de dados dentro do  Earth Engine Code Editor . O Editor de código do Earth Engine é onde você pode escrever e compilar código Javascript especial no navegador. Para fazer isso, você precisará enviar um formulário ao Google com uma conta do Google acompanhante para acessar o editor de código. É gratuito e você pode  se inscrever aqui .

 

Como você usa esses conjuntos de dados? 

Quando estiver no editor, você poderá criar um  novo script . Você pode fazer isso clicando em ‘novo’ na guia de scripts à esquerda, selecionando ‘arquivo’ e dando um nome ao script.

 

Opcionalmente, você pode criar um repositório ou pasta para organizar melhor sua hierarquia de scripts. É importante que, nesta fase, você tenha escolhido os dados que gostaria de usar em seu mapa. Para este exemplo, estou usando o conjunto de dados  ERA5  para exibir dados de temperatura global.

Agora podemos começar a escrever nosso script!

 

O código que você pode ver no exemplo acima está usando pedaços dos trechos de código fornecidos na documentação do conjunto de dados ERA5. As três partes no exemplo descrevem a implementação mais simples de um script que você pode ter.
Parte um:

Para começar, inicializamos a coleção de imagens. Uma coleção de imagens é essencialmente um conjunto ordenado de imagens que podem ser carregadas em um mapa. ‘ECMWF/ERA5/DAILY’  é a rota que analisaremos na  função ee.ImageCollection  para extrair o conjunto de dados ERA5. Para obter os dados de temperatura do ar, vamos selecioná-los usando  ‘mean_2m_air_temperature’ . Por fim, filtraremos para exibir apenas os dias de julho de 2019.
Parte dois:

Aqui, configuramos os parâmetros de visualização. Isso determinará como a camada ficará no mapa. Nesse caso, precisamos apenas de três variáveis. A paleta define uma matriz de valores hexadecimais (que representam a cor) para visualizar o conjunto de dados. Os valores mínimo e máximo determinam a distribuição do intervalo de cores que definimos na paleta.
Parte TRÊS:

Finalmente, podemos adicionar a camada ao mapa usando  Map.addLayer . Aqui analisamos a coleção de imagens (ela é filtrada mais uma vez para obter os dados de um único dia), os parâmetros de visualização e um título.

Em seguida, clicamos em ‘executar’ e devemos ver os resultados abaixo.

 

 

Camadas multibanda e recorte de geometria

Mas e se quisermos ver uma camada recortada em uma área específica do mapa? Ou se quiséssemos visualizar dados em mais de uma banda visual?

Vou usar o caso de visualização de NDVI (Índice de Vegetação de Diferença Normalizada). O NDVI mede essencialmente a vegetação na Terra; alguns casos de uso incluem prever o rendimento agrícola, identificar áreas de risco de incêndio e documentar áreas em seca. Você pode ler mais sobre NDVI  aqui .

O NDVI é descrito a seguir, onde NIR = refletância vermelha do infravermelho próximo e RED = refletância vermelha:
NDVI = (NIR-VERMELHO) / ​​(NIR+VERMELHO)
Se você quiser visualizar o NDVI, precisará usar duas bandas – a banda do infravermelho próximo e a banda do infravermelho.

Para obter a refletância da superfície, você pode usar o conjunto de dados  Sentinel 2  . Na guia bandas, podemos ver todas as bandas que estão disponíveis para uso. Anote as  bandas B4  (vermelho) e  B8  (infravermelho próximo) – vamos precisar delas mais tarde.

 

Agora, vamos fazer um novo script do zero. Farei uma geometria que exiba a camada NDVI sobre o estado americano de Wyoming (um belo retângulo simples). Para começar, desenharei um polígono no mapa que usaremos no script. Você pode fazer isso selecionando as ferramentas de desenho no mapa e desenhando uma forma. O polígono criado pode ser referenciado automaticamente no script após a conclusão do desenho.

 

Agora podemos usar a geometria no script. Ele aparecerá na seção ‘Importações’ do seu editor de script.

 

A maior parte da funcionalidade deste script é compartilhada com o exemplo ERA5, mas há algumas coisas extras acontecendo:
Parte um:

Como mencionei anteriormente, a geometria criada aparecerá na seção de importações aqui. Se houver vários polígonos, isso nos ajudará a diferenciá-los renomeando cada um, o que você pode fazer aqui.
Parte dois:

A coleção de imagens, depois de filtrada, é mapeada usando a  função normalizedDifference  , e as duas bandas que queríamos usar são colocadas em um array:  B4  (vermelho) e  B8  (próximo do infravermelho). Após a conclusão do mapeamento, queremos obter o valor máximo para cada região e, finalmente, o recortamos na geometria que foi desenhada.

A saída é a seguinte (com um valor de opacidade de 0,8).

 

Posso usar isso em meus próprios aplicativos? 

Sim! Quase todos os aspectos do código no editor de código do Earth Engine podem ser copiados para Javascript (ou qualquer linguagem baseada em Javascript). Aqui está um trecho de código no  TypeScript  usando a estrutura  Angular  que tem exatamente a mesma funcionalidade:

 

A maior parte do código acima é o mesmo com algumas mudanças aqui e ali, vou explicar aqui para você.

Em primeiro lugar, todas as vars são alteradas para const – esta é uma convenção do Typescript.

A principal diferença é que envolvemos a função dentro de uma promessa, o que nos permite executar a função de forma assíncrona e não congelar a aplicação quando queremos carregar na camada. O tipo de promessa é  EarthEngineMapResponse , que é uma interface autodefinida que define o mapa (com um ID e coordenadas) que queremos que a função retorne.

Finalmente, em vez de  map.AddLayer  , usamos  image.getMap , com o formato definido acima.

Em vez de retornar o mapa ao mapa do Earth Engine, nós o extraímos usando esta função. A promessa simplesmente garante que essa função seja executada completamente antes da próxima operação.

 

Mas como isso funciona? Todos os conjuntos de dados de satélite precisam ser inseridos em um aplicativo? 

Isso consumiria muitos recursos — em vez disso, os dados são enviados para serem executados no servidor do Earth Engine. Qualquer função que tenha ‘ ee ‘ antes de fazer isso. Às vezes, você deseja obter esses dados brutos de volta, que podem ser extraídos usando a  função getInfo  após uma operação ee.

 

https://ngis.com.au/Newsroom/Using-Google-Earth-Engine-to-render-satellite-laye disponível em 04.04.2002

 

[activecampaign]