Laboratórios didáticos de Geoprocessamento Google Earth Engine: aquisição de imagens de satélite Docente: Prof.ª Dr.ª Mariana Giannotti Elaboração do Roteiro: Bruna Pizzol Tainá Bittencourt Agradecemos ao Marcos Rosa pela disponibilidade para ajudar nas dúvidas técnicas e pelo compartilhamento de scripts e material de apoio.
Sumário Introdução 4 Primeiros passos no GEE 4 Acesso à plataforma 4 Processamento de scripts 6 Obtenção de imagens de satélite 8 Importação de arquivos shapefiles 16 3
Introdução O Google Earth Engine é uma ferramenta do grupo Google que consiste em uma avançada plataforma de geoprocessamento, em que vários petabyte de imagens de satélite e conjunto de dados geoespaciais armazenados na nuvem Google são disponibilizados aos usuários. Isso a torna muito mais rápida em comparação com outros programas utilizados para o tratamento dessas informações. Essa plataforma permite o usuário visualizar, manipular, editar e criar dados espaciais de uma maneira rápida, fácil e interativa, por exemplo, na análise de dados ambientais em escala global. São disponibilizadas diversas ferramentas de manipulação espacial que permitem cientistas, pesquisadores e desenvolvedores detectar mudanças, mapas de tendências e quantificar diferenças sobre a superfície da Terra. O processamento dos dados é realizado através de scripts (de NDVI, NDBI, classificação não-supervisionada e supervisionada, tratamento de feições, entre outros), por meio de uma interface integrada (API) às linguagens JavaScript e Python 1. Por causa disso, uma grande vantagem do GEE é a análise e a manipulação dos dados de acordo com as necessidades do usuário. Para mais informações sobre as diversas aplicações do GEE, existem diversos estudos no link: https://earthengine.google.com/case_studies/ Primeiros passos no GEE Acesso à plataforma 1. Acesse o link do GEE (exige uma conta do Google): https://code.earthengine.google.com 1 Os documentos e o API são, a princípio, focados em JavaScript, mas é possível instalar Python na plataforma do GEE, por meio de um guia de instalação fornecido no site. 4
Figura 1 - Página inicial do GEE. 2. Cadastre-se com o e-mail Google e dê as permissões necessárias (Sign up). 3. Conheça a interface do GEE Figura 2 - Interface do GEE. A ferramenta de busca na parte superior central permite a localização e a incorporação de locais e conjuntos de dados (como imagens de satélites específicos) aos mapas e códigos. À esquerda, estão localizados os códigos (Scripts) através dos quais os dados geoespaciais são processados pelo GEE. Sendo editáveis e programáveis, eles permitem uma ampla liberdade de manipulação das funções e parâmetros conforme a necessidade. 5
Aqui também estão presentes as abas referentes a todos os arquivos e imagens (inputs) importados à ferramenta: Docs e Assets. A parte central da tela é dedicada à edição dos códigos e, consequentemente, à programação das operações e procedimentos a serem executados pelo GEE. À direita, localizam-se as abas de comunicação. Os erros de processamento são exibidos na aba Console, indicando a necessidade de adaptação ou correção do código. A aba Tasks exibe as tarefas executadas e em execução pelo programa, permitindo também a sua manipulação pelo programador. Na aba Inspector, é possível obter informações espaciais e demais atributos sobre objetos ou locais de interesse no mapa., conforme ilustrado pela Figura 3. Figura 3 - Para obter as coordenadas de um ponto desejado ou demais informações de objetos espaciais, basta clicar na aba Inspector no canto superior direito e em seguida no ponto desejado no mapa. Os mapas e objetos espaciais processados pelo GEE são exibidos na metade inferior da tela, à semelhança do Google Maps. À esquerda, estão as ferramentas de zoom, pan e de criação manual de pontos, retas e polígonos. À direita, as ferramentas de tela inteira e de alternância de visualização entre mapa e satélite. Processamento de scripts Como já mencionado anteriormente, o Google Earth Engine funciona por meio de scripts editáveis. O GEE fornece de início modelos básicos de scripts para a realização 6
de certos procedimentos. Experimente rodar alguns deles para observar e se familiarizar com a linguagem e o funcionamento de algumas ferramentas e operações. Como exemplo, vamos rodar o script From Name, que posiciona um modelo digital de elevação topográfica por meio de imagens obtidas a partir do SRTM (Shuttle Radar Radar Topography Mission) sobre o mapa de fundo. 4. Selecione o script From Name, à esquerda da janela. Leia o código referente a esse procedimento na janela do meio (interface API) e clique em run. Figura 4 - Exemplo do script From Name. Figura 5 - Resultado do script From Name. 7
Note que a função ee.image importa a imagem SRTM disponível na biblioteca do GEE, que é em seguida posicionada pela função Map.setCenter, cujos argumentos são a longitude, latitude e um grau de zoom que varia de 1-24. Por fim, a função Map.addLayer é utilizada para adicionar a imagem ao mapa, permitindo sua visualização. Para a obtenção de outras imagens de satélite, vamos utilizar essa mesma lógica de programação: definição do satélite e das imagens a serem utilizadas, definição de filtros espaciais e temporais referentes ao objeto a ser analisado e então definição de atributos e características específicas à imagem a ser mapeada e visualizada. 5. Antes de prosseguir, limpe a área de scripts e do mapa, deletando todas as linhas de código e clicando sobre o botão Reset. Obtenção de imagens de satélite 6. No canto superior esquerdo da tela, clique no botão NEW e escolha a opção Repository. Isso criará um novo repositório para os scripts. Figura 6 - Criação de um novo repositório. 7. Nomeie o home folder e depois o repository. Escolha os nomes que desejar, eles serão utilizados ao longo de todos os laboratórios. Lembre-se de não utilizar 8
acentos ou caracteres especiais e de preferência restrinja-o a no máximo 8 caracteres. Figura 7 - Nomeação do home folder e repository. Observe que o repositório foi adicionado dentro de Owner na aba Scripts. Figura 8 - Repositório adicionado dentro de Owner na aba Scripts.. Existem várias formas de estabelecer os limites da área estudada, para a qual vamos importar as imagens de satélite. Aqui utilizaremos as ferramentas de busca e edição do GEE. 8. Na parte superior da tela, digite o nome do local desejado (Mariana, MG) e, depois do zoom, crie um marcador de ponto utilizando as funções de edição na lateral esquerda da tela de visualização. 9
Figura 9 - Ícone para adicionar marcadores. 9. Após a seleção do marcador, clique sobre o município de Mariana. Figura 10 - Marcador sobre a área a ser estudado. Note que uma nova variável foi importada ao script com o nome geometry. Você pode renomeá-la como preferir, clicando sobre o nome em roxo, porém lembre-se de substituir o novo nome nas funções que iremos utilizar em seguida. Agora devemos selecionar o satélite a partir do qual importaremos as imagens, com base nos objetivos da análise e da disponibilidade de dados, tais como resolução espacial, períodos temporais, etc. Aqui utilizaremos as imagens do Landsat 5. 10. Na ferramenta de busca do GEE, procure pelo USGS Landsat 5 TM TOA Reflectance (Orthorectified) e selecione o arquivo raster adequado. 10
11. Na janela referente ao arquivo, verifique as informações da imagem e a disponibilidade temporal e clique em Import. Automaticamente, a coleção de imagens de satélite disponíveis será importada com o nome de imagecollection. Você pode renomear esta variável como desejar clicando sobre o nome dela, em roxo. Este processo é bastante indicado, principalmente quando trabalhamos com inúmeras bases de dados e coleções de imagens, de modo a organizar o script e facilitar a programação. Contudo, lembrese sempre de adaptar o código e suas funções aos novos nomes das variáveis. Figura 11 - Importação das imagens do satélite Landsat 5. 12. Para filtrar as imagens para a área estudada, usaremos a função filterbounds, atribuindo-a à variável filtro. Essa delimitação pode ser feita utilizando a variável geometry (definida pelo marcador). Faça isso por meio do código: var filtro = imagecollection.filterbounds(geometry) 11
Figura 12 - Função filterbounds. Para estabelecer os recortes temporais da imagem, utilizaremos a função filterdate, que tem como parâmetro as datas inicial e final das imagens a serem importadas. 13. Adicione, na variável filtro, a função filterdate para o intervalo entre 01/01/2007 e 31/12/2007. Figura 13 - Função filterdate. 14. Para facilitar a seleção das imagens com a menor interferência de nuvens, aplique ainda a função filtermetadata, para o atributo CLOUD_COVER. Inicialmente, filtraremos para valores menores que (less_than) 0.5. 12
Figura 14 - Função filtermetadata. 15. Adicione as imagens de satélite disponíveis por meio da função Map.addLayer sobre a variável filtro e clique em Run. Com isso, teremos um polígono sob o marcador semelhante à imagem a seguir. Figura 15 - Função Map.addLayer sobre o filtro. Pode ser que o corte de 0.5 seja baixo para o caso analisado e que não haja imagens com CLOUD_COVER menor que esse número. Se este for o caso, procure aumentá-lo (para 0.8, por exemplo) até encontrar alguma imagem. Como regiões do polígono estudado são capturadas por duas diferentes varreduras de satélite, o GEE retorna dois quadros de imagens. Contudo, como o município de Mariana é coberto integralmente pela imagem da direita, iremos prosseguir a análise utilizando apenas esta como base. 13
16. Clique na aba Inspector e, em seguida, na imagem de satélite à direita. Estarão disponíveis algumas informações sobre a imagem. Figura 16 - Aba Inspector. No exemplo em questão, há apenas uma imagem de acordo as especificações de filtros estabelecidos. Entretanto, pode acontecer de duas ou mais imagens estarem disponíveis. Assim, deve-se escolher aquela com menor CLOUD_COVER ou que se adeque melhor ao estudo proposto a partir de seus outros atributos. Se esse for o caso, clique em Objects - Layer 2 - número da imagem (neste caso, igual a 0) properties e avalie as informações apresentadas. 14
Figura 17 - Atributos da imagem de satélite. 17. Para visualização da imagem de satélite selecionada, deve-se copiar o seu id (obtido na aba Inspector) e inseri-lo como parâmetro para a função ee.image atribuída a nova variável rgb. Faça isso por meio do código: var rgb = ee.image( id da imagem ) 18. Essa variável será o parâmetro para a função Map.addLayer, adicionando as bandas B3 (red), B2 (green) e B1 (blue), mais adequadas para o mapeamento de cores naturais para o Landsat 5. Faça isso por meio do código: Map.addLayer(rgb,{bands: B3,B2,B1,min: 0,max: 0.2}) Figura 18 - Função para escolha e mapeamento das imagens de satélite segundo as bandas de rgb. 15
No caso de análises para períodos mais recentes, podem ser utilizadas as imagens dos satélites Landsat 7 e Landsat 8. Para o primeiro, as bandas utilizadas para o mapeamento (rgb) seguem o mesmo padrão do Landsat 5. Para o segundo, o mapeamento de cores naturais é realizado pelas bandas B4 (red), B3 (green) e B2 (blue). Além disso, podem ser adicionados comentários para descrever as operações realizadas em cada linha ou conjunto de linhas do código por meio de barras duplas. Toda informação da linha precedida por // não será processada pelo GEE. Esse artifício pode ser também utilizado nas operações anteriores, já processadas pelo programa, diminuindo o tempo de execução das tarefas. Figura 19 - Imagem de satélite sobre a região estudada. Importação de arquivos shapefiles Outra maneira de delimitar a área de estudo para a qual serão importadas as imagens de satélite é a partir da importação de arquivos no formato shapefile. 19. Primeiramente, faça o download do arquivo GE - Mariana disponibilizado no portal da disciplina no Moodle USP. Descompacte-os e salve-os em algum local no seu computador. Em qualquer processo de importação de arquivo shapefile, é importante verificar que o datum dos dados seja WGS-1984 e o sistema de coordenadas seja de coordenadas 16
geográficas (GCS). Nesse caso, os arquivos disponibilizados já estão no formato adequado. 20. Clique na aba Assets no canto superior esquerdo da tela e clique no botão CREATE A NEW FOLDER e em seguida no botão NEW. Figura 20 - Acesso à aba Assets e botão CREATE HOME FOLDER e NEW. 21. Após clicar em NEW, aparecem as opções Image upload (upload de dados raster em formato GeoTIFF) e Table upload (upload de dados vetoriais em formato shapefile, Google fusion tables ou KML). Escolha a opção Table upload. Figura 21 - Adicionando um arquivo shapefile (opção Table upload). 22. Após clicar na opção Table upload, clique no botão SELECT para selecionar em sua máquina o arquivo shapefile correspondente aos limites municipais de Mariana (selecione os arquivos com formato.dbf,.prj,.shx,.shp) e clique em Abrir. Será automaticamente dado um nome para o asset. Renomeie-o de acordo com sua preferência e clique no botão OK. 17
Figura 22 - Escolhendo o arquivo shapefile para upload no GEE. Figura 23 - Inserindo um novo objeto vetorial. 23. Após clicar em OK, clique na aba Tasks, localizada no canto superior direito, e acompanhe o andamento do upload do arquivo. Este processo pode demorar alguns minutos. 18
Figura 24 - Processo de importação do arquivo shapefile. 24. Depois de terminado o upload do arquivo shapefile, clique sobre a aba Assets, localizada no canto superior esquerda da tela, e localize o asset salvo (neste caso, MARIANA). Figura 25 - Shapefile do município de Mariana importado como asset. 19
25. Clique sobre o asset e observe suas informações. Figura 26 - Informações do shapefile da área de trabalho importado como asset. 26. Clique no botão Import para adicioná-lo como variável no código. Será adicionada uma variável nomeada table na área de código. Figura 27 - Asset inserido no script. 27. Renomeie a variável table correspondente ao polígono dos limites municipais de Mariana clicando sobre ela. Neste caso, a variável será denominada poligono. Figura 28 - Renomeando a variável. 20
28. Para visualizar o asset importado, adicione a seguinte linha na área de código do GEE: Map.addLayer(poligono) e clique no botão Run. Observe que a área correspondente ao arquivo shapefile será adicionado ao mapa. Figura 29 - Visualização do arquivo shapefile (município de Mariana) no mapa. A partir de então, você poderá utilizar esta nova variável de polígono para delimitar a área para a qual serão obtidas as imagens de satélite. Basta substituir em todas as funções a variável obtida pelo marcador (no nosso caso, geometry) pela variável obtida pelo shapefile (neste caso, poligono). 21