Recuperando programaticamente as imagens de satélite do Landsat 8?

27

Eu não consegui descobrir isso sozinho, mas existe uma maneira de acessar programaticamente as imagens de satélite do Landsat 8?

Sei que posso acessar o USGS EarthExplorer para pesquisar e navegar pelas cenas e até fazer o download delas. Mas não quero baixá-los para o meu computador por dois motivos: minha internet está lenta e meu laptop tem problemas de refrigeração.

Então, em vez disso, acho que quero transferir as imagens diretamente para uma instância de "nuvem" para processamento de dados. Eu também seria legal se pudesse fazer o download e processar essas imagens assim que estiverem disponíveis no USGS.

Frank
fonte
Quais produtos de processamento você deseja fabricar?
Willy
1
Você pode estar interessado em earthengine.google.org/#intro
Willy
Algum progresso nisso?
Willy
@Willy Minha intenção era apenas experimentar, mas eu estava planejando ver se posso criar uma ferramenta que agregue imagens dos agregados de minha vizinhança, que faça séries temporais e alertas de mudanças e também uma imagem composta sem nuvens. Tenho experiência com alguns PaaS: es, mas acho que eles podem ser muito limitados e que terei que usar um IaaS como o EC2. Então, até eu aprender sobre isso, o projeto está morto. Vou verificar o seu link.
19413 Frank
Na minha opinião, o problema é o parâmetro "did" no link, agora ainda não sei o que é esse parâmetro, porque depois de alguns dias o antigo "did" será desativado e toda vez que você usar a ferramenta de download do site isso vai mudar. Também quero baixar o Landsat 8 do earthexplorer e ainda assim ficar preso aqui.
B Rng Rikimaru

Respostas:

11

Eu vi uma postagem no blog da developmentseed por seu utilitário de linha de comando landsat-util.

Ferramentas elétricas para imagens de satélite

O landsat-util pode ser bifurcado no github e compilado a partir do código fonte, a menos que seu sistema operacional o ofereça em um binário pronto para uso.

O blog descreve simplesmente como:

um utilitário de linha de comando que facilita a pesquisa, o download e o processamento de imagens do Landsat.

Você pode pesquisar com base na data,% de cobertura de nuvem e outras coisas, fazer o download imediatamente ou processar uma vez baixado, como ampliar ou unir as imagens.

Você pode visualizar imagens antes de fazer o download. Os comandos de pesquisa fornecem um link para uma miniatura para cada imagem.

landsat search --cloud 4 --start "August 1 2013" --end "August 25 2014" country 'Vatican'

O uso do sinalizador --pansharpen levará mais tempo para processar, mas produzirá imagens mais nítidas.

landsat search --download --imageprocess --pansharpen --cloud 4 --start "august 11 2013" --end "august 13 2013" pr 191 031

Você também pode executar todo o processamento das imagens baixadas anteriormente.

landsat download LC81050682014217LGN00

landsat process --pansharpen /your/path/LC81050682014217LGN00.tar.bz

Aqui está um leia - me com mais informações.

SaultDon
fonte
11

Que tal acionar uma instância do EC2 ou do espaço de rack e instalar o aplicativo de download em massa EarthExplorer:

http://earthexplorer.usgs.gov/bulk/

Você pode acessar o serviço EarthExplorer com uma solicitação POST para enviar tarefas programaticamente:

http://earthexplorer.usgs.gov/subscription/submit/

Você precisará fornecer os parâmetros standingRequestName, frequency, subscription_start, subscription_end, search_start, search_start, search_end. Isso ajudaria você a começar, mas parece uma porta dos fundos e que o aplicativo de download em massa em execução em uma instância do EC2 seria uma opção melhor e menos demorada.

bcollins
fonte
Depois de alguma exploração, estou apoiando essa sugestão. Parece que você pode usar os URLs EE se conseguir enviar autenticação com sua solicitação, mas essa alternativa seria imprudente.
Chryss
Minha resposta para o Site fazer o download de todos os mapas do USGS Topo em massa pode ajudar na construção de solicitações POST (embora tenhamos que esperar o governo dos EUA retomar as operações para descobrir).
Matt Wilkie
4

Pretendo fazer o mesmo, iniciando uma instância do Amazon EC-2 e instalando o Download em Massa nela. Mas, tanto quanto eu sei, é um aplicativo gráfico e nada no Tutorial de download em massa de documentos permite que você possa usá-lo com o terminal.

Eu li aqui sobre a possibilidade de usar o Curl, mas ele retorna um acesso 403 negado


Depois de escrever e-mails no USGS, a resposta oficial é que o download em massa é a única maneira de fazer o download em massa.

Mas Charlie Loyd From Mapbox me escreveu outra possibilidade:

O Google Storage também reflete grande parte do arquivo Landsat. Você pode instalar o “gsutil” (gratuito) e listar esse diretório, que é indexado pelo sensor (por exemplo, L8 é Landsat 8) e caminho / linha: gsutil ls gs: // earthengine-public / landsat /

Devo acrescentar que, ao navegar pelos caminhos e linhas, lembre-se de que é baseado em 3 números. Por exemplo, se você precisar do Caminho 210 Linha 40, precisará procurar a pasta 210 e, em seguida, 040.

Inclanfunk
fonte
Sobre o uso do cURL, acho que você deve alimentá-lo com alguns cookies; Abra o inspetor do seu navegador para ver quais cookies estão definidos.
25414 Frank
Que a idéia @Frank, mas não consigo encontrar o caminho. Com o seguinte código: Curl -v --cookie "cookieName = MyAuthCookie " " TheLinkTotheArchive ", ele ainda retorna um erro 403.
Inclanfunk
3

Eu escrevi um script bash para fazer isso. Observe que você pode personalizar os locais da URL e do mouse e cliques no botão no segmento de código com o comando xdotool sendo utilizado. Aqui está o código fonte:

via: Everything Awesome YTC na lista de reprodução do bash

#!/bin/bash

echo " "

sudo apt-get install xdotool -y
sleep 2

echo " "
echo "# NASA/NOAA/NHC Hurricane Satellite Imagery Bot [H.S.I.B]"
echo "# Coded by Scott Hermann "
echo "[ YouTube: https://www.youtube.com/user/postulatedstate/videos/ ]"
echo " "

# * * Instructions * *
# 1] Click on map to select area to monitor.
# 2] Set delay variable ( time between saves )
# The script will now refresh and save the images-
# -every X seconds, and save using the filenames
# filename-X.jpg; filename-X.jpg; etc..

export PS1="\e[0;30m[\u@\h \W]\$ \e[m "
# make black prompt - color code=[0;30]

chromsat_loop()
{
 chromium -new-tab https://weather.msfc.nasa.gov
 sleep 2

 notify-send "Your browser will now open the NASA website. Select the section of earth to monitor via Satallite by clicking on it, and then enter Y or N (caps) into the terminal, or press the [Begin] button on the GUI."
 echo " "
}


get_settings()
{
  echo -n "Enter storm name: "; read stormname
  echo -n "Season? [ Ex: 2017 ] "; read season
  echo -n "Month "; read month
  # echo -n "data"; <- remember ;
  sleep 2
  echo " "
  echo "Checking to see if a database for hurricane $stormname of the $season season exist in the month of $month"
  sleep 2
  echo " "
  # if dir $season = true then confirm
  if [ -d /root/Desktop/$season ]; then
     notify-send "The hurricane season exist in the database."
     echo "The hurricane season exist in the database."
     echo " "
  else
     echo "It doesn't appear that this season is in the database. I will create it for you."
     mkdir /root/Desktop/$season
  fi

  # if dir $season/$month = true then confirm

  if [ -d /root/Desktop/$season/$month ]; then
     notify-send "The month entered has data in the database."
     echo "The month entered has data in the database."
     echo " "
  else
     mkdir /root/Desktop/$season/$month
  fi

  # if dir $season/$month/$stormname = true then confirm

  if [ -d /root/Desktop/$season/$month/$stormname ]; then
     notify-send "This storm is in the database."
     echo "This storm is in the database."
  else
     echo "Adding the storm to the database."
     notify-send "Adding the storm to the database."
     echo " "
     sleep 1
     mkdir /root/Desktop/$season/$month/$stormname
  fi
  echo " "
  sleep 2

  echo -n "Enter data retrieval delay variable: ( 1200 = 20 minutes ) "; read delay

  echo " "
  sleep 2

  echo " "
  echo "1] Chromium"
  echo "2] Firefox"
  echo "3] Qupzilla"
  echo "4] Modori"
  echo " "
  echo -n "Which Web-Browser are you using? "; read browser


  if [ "$browser" = "1" ]; then

       echo "Initializing NASA Data Transfer..."
       chromsat_loop
  fi

  if [ "$browser" = "2" ]; then

       echo "$browser set to Firefox"
  fi


# End Of Function
}

get_settings

# Note: Calling functions in bash -> fun_ction

# Create 4 functions for the 4 browsers it will support..



ready_ornot()
{
  notify-send "In 45 seconds, the script will begin data retrieval.. Go ahead and select the portion of the storm on the map that you wish to monitor. Save the first image to the directory on your desktop. It's listed under the year, the month, and the storm. From there, the bot will save the images to that folder."
  echo "In 45 seconds, the script will begin data retrieval.. Go ahead and select the portion of the storm on the map that you wish to monitor. It's listed under the year, the month, and the storm. From there, the bot will save the images to that folder."

  newloop=0
  until [ "$newloop" = "45" ]
  do
     sleep 1
     echo "Initializing data retrieval process in 45 seconds. @ $newloop second(s)...."
     newloop=`expr $newloop + 1`
  done

  notify-send "Initializing data retrieval process.. "
  echo "Initializing data retrieval process.."
  echo " "

}

ready_ornot

begin_dataretr()
{
 sleep 2
 notify-send "@ Data Retrieval Function."
 # url opened in new tab waiting
 # variables=value; = NO space [x]-> var = 1<-(wrong)
 forever=1
 looper=1
 while [ "$forever" == "1" ];
 do
     # refresh chromium page
     sleep $delay && echo $delay # 60 for test; 1800=30 mins
     # Save images after refresh;
     # plug\/ looper \/ variable in filenames
     # file1.jpg file2.jpg file3.jpg etc.


     # <!--#!/bin/bash-> to be modified and completed * * * * * * * * * #!/bin/bash -!>


     # CD to folder 
     # /root/Desktop/season/month/stornname
     # ( that should make the save as file dialog box open in our folder )
     echo " " 
     echo "Done sleeping.."
     echo " "
     # xdotool getmouselocation --shell

     xdotool mousemove 765 438
     # mouse positioned to click on save file box
     # for loop through var to save file name as
     sleep 1
     xdotool click 1
     # text box clicked and waiting.
     sleep 1
     xdotool key F5
     sleep 7
     xdotool mousemove 953 229
     sleep 1
     xdotool click 1
     sleep 5
     xdotool click 3
     sleep 3
     xdotool key Down
     xdotool key Down
     sleep 2
     xdotool mousemove 983 261
     sleep 1
     xdotool click 1
     sleep 1
     # xdotool key Enter
     sleep 1   
     xdotool mousemove 1146 763
     sleep 1
     xdotool click 1
     notify-send "New data retrieval has been saved to database.."

     # <!--#!/bin/bash-> to be modified and completed * * * * * * * * * #!/bin/bash -!>

 done
}
begin_dataretr
# no () when calling functions.
#  - - - - - -  - only when def them.
Scott S Hermann
fonte
2

https://github.com/olivierhagolle/LANDSAT-Download

Esse script, com alguns ajustes (problemas de indentação e alguns comentários / variáveis ​​foram em francês), foi extremamente útil para mim. No entanto, ele só pode baixar os dados que já estão no arquivo morto. Portanto, para dados que não foram processados, você deve solicitá-los. Estou trabalhando para automatizar isso agora, mas com um início lento (como eu comecei há 30 minutos). Eventualmente, quero que os dados sejam baixados para o meu servidor em nuvem, mas por enquanto estou testando-os na minha área de trabalho (você apenas especifica um diretório de saída e os arquivos são automaticamente colocados lá).

Também estou interessado em fazer o download dos dados assim que estiverem disponíveis - especificamente os dados de refletância de superfície antes de serem descartados (disseram-me que o USGS processa os dados brutos em refletância de superfície temporariamente antes de descartá-los, embora alguns sejam armazenados no arquivo ) Informe-nos se você fez algum progresso.

user20408
fonte
0

Esta plataforma é simples! faça o download do KMl e abra-o no google earth. Pesquise um local e encontre o caminho / linha (local central de possíveis imagens) ou o caminho / linha que encontrou para o local e local da plataforma.

Todas as imagens para aquele local aparecera

Tradução do Google:

Esta plataforma é simples! faça o download do KML e abra-o no google earth. Procure um local e encontre o caminho / linha (local central das possíveis imagens), coloque o caminho / linha que você encontrou para o local e coloque-o na plataforma. Todas as imagens para esse local serão exibidas

http://georef.vantis.pt

user2342603
fonte
Bem-vindo ao GIS SE! Somos um pouco diferentes de outros sites; este não é um fórum de discussão, mas um site de perguntas e respostas. Confira nosso breve tour para saber mais sobre o nosso formato de perguntas e respostas focado. Por favor, poste apenas em inglês também ...
PolyGeo
Evite auto-promoção aberta. A comunidade tende a votar contra a autopromoção aberta e sinalizá-la como spam. Poste respostas boas e relevantes e, se algumas (mas não todas) forem sobre o seu produto ou site, tudo bem. No entanto, você deve divulgar sua afiliação em suas respostas. . Na prática, isso significa que qualquer resposta que recomende seu próprio produto deve incluir algo como " Divulgação: sou a [posição] da [empresa] que desenvolve / distribui este software".
PolyGeo
Aborde os problemas de (1) sua resposta que precisa estar em inglês, (2) para não incluir uma recomendação do seu próprio produto sem divulgação e (3) para responder diretamente à pergunta, pois isso não parece oferecer uma maneira para "acessar programaticamente as imagens de satélite do Landsat 8".
PolyGeo