domingo, 15 de maio de 2011

Georeferenciar Fotografias e visualizá-las no Google Earth

------------------------------------------------
Software necessário:        
                                         
 - GPS Prune               
 - ExifTool                                 
  
 -----------------------------------------------

Ter um arquivo fotográfico em que cada fotografia tem associada coordenadas geográficas/cartográficas pode ser extremamente útil não só para partilhar informação técnica, turística ou simplesmente pessoal, mas também pode ser uma forma muito interessante de apoio à gestão patrimonial.

É uma tarefa relativamente simples que pode ser feita tirando partido da extensão .exif (abreviatura de extended information) que basicamente é uma tag que anexa informação escrita a uma dada imagem, neste caso geográfica - latitude e longitude.

Vamos começar por instalar os dois programas que precisamos. Descarregamos e guardamos o Runnable Code do GPS Prune a partir daqui e o Windows Executable do ExifTools a partir desta página. O GPS Prune lida com ficheiros geográficos (.gpx; .kml; .kmz;) e o ExifTool permite associar a informação geográfica a uma ou mais imagens.

Para que tudo funcione correctamente temos de proceder da seguinte forma:
  • Nenhum destes programas necessita instalação. Vamos por isso criar uma pasta para guardar os dois programas (por exemplo C:/GPS Prune)
  • Para que o GPS Prune consiga evocar o ExifTool, o ExifTool deve estar na mesma directoria do GPS PRune (o que já foi feito passo anterior) - e tamém temos de mudar o nome ao executável do ExifTool. Quando descarregamos o ficheiro ele vem com  o nome "exiftool(-k)", temos de alterar para simplesmente "exiftool". 
Terminados estes dois passos podemos passar ao que realmente interessa - georreferenciar fotografias!

O cenário ideal - no qual se baseia este post - é que tanto as coordenadas como as fotografias foram registados ao mesmo tempo, ou seja, no momento em que tirávamos a fotografia também estávamos (mais minuto menos minuto) a registar com o GPS o ponto de onde tirámos a fotografia. Para que isto funcione há que ter o cuidado de configurar a hora e data da nossa máquina fotográfica de modo a que seja coincidente com a do GPS - a hora da nossa máquina deve ser configurada em função da hora indicada pelo GPS.

Descarregamos as fotografias que tirámos durante o dia e os pontos registados no GPS (utilizar o formato .gpx) para uma pasta. Neste exemplo irei utilizar um conjunto de dados recolhidos por mim na vila de Odemira, no Sudoeste Alentejano. 

Primeiro passo: abrir o GPS Prune e Carregar as fotografias.



Segundo passo: abrir o ficheiro .gpx com os pontos onde foram tiradas as fotografias.



Terceiro passo: conectar um dos pontos à fotografia certa - no exemplo em baixo, o ponto "Chafariz"


Quarto passo: a partir do menu "Foto" seleccionar "correlacionar fotos". Surgirá uma janela com a diferença temporal entre a foto e o ponto que correlacionámos no passo anterior. Essa diferença será assumida como a diferença média para todas as restantes fotos e pontos. Basta clicar em "próximo" para obter um quadro com todas as correlações que foi possível efectuar automaticamente. No fim destas operações deveremos ter uma série de pontos a amarelo assinalando os pontos que foram conectados a determinadas fotografias. Convem verificar algumas para ver se a correlação foi bem feita. Se repararem, a listagem de fotos - no canto inferior direito - é antecedida de um asterisco. Isso significa que estão conectadas/correlacionadas com um dos pontos do nosso projecto.

 

Quinto passo: Vamos agora guardar tudo num ficheiro .kmz que abrirá os nossos pontos no Google Earth com miniaturas (thumbnails) das nossas fotos associadas aos pontos. A partir do menu "Arquivo" escolhemos a opção "Exportar para .kml". Surge uma janela e temos de ter o cuidado de selecionar as opções"Comprimir para criar kmz" e "Exportar miniaturas de imagem para o kmz". O resultado, neste caso, será um único ficheiro .kmz, com 90kb que abrirá no google earth já com as miniaturas das nossas imagens associadas aos pontos.


Sexto passo (opcional): a partir do menu "Foto" seleccionar "Salvar para exif". Deste modo vamos guardar uma segunda via das nossas fotografias com a informação geográfica já incluída. Estas fotos com informação geográfica anexada serão criadas com o sufixo "_original" e poderá ser necessário definir manualmente a extensão (.jpg).

No fim de todas estas operações temos um conjunto de fotografias georeferenciadas - neste caso referentes a Odemira, e um ficheito .kmz que nos permite ver a localização das fotografias (e uma miniatura das mesmas) no Google Earth.

Há várias opções para calibrar o nível de tolerância entre a diferença da hora do GPS e da máquina fotográfica, no entanto se a data/hora da máquina fotográfica for devidamente acertada antes de começar o trabalho à partida não teremos de nos preocupar com essas opções porque a correlação será feita, teoricamente, sem problemas. Se, mesmo assim, houver uma ou outra foto que não foi correlacionada automaticamente, podemos tratar desses casos isolados através de uma conexão manual (ilustrada no Terceiro Passo) antes de exportar o trabalho para .kmz.


30 comentários:

  1. Bom dia.

    esse procedimento pode ser feito sem a ajuda do GPS ou seja manual?

    ResponderEliminar
  2. Olá,

    Sim é possível. Dá mais trabalho mas o resultado final é o mesmo.

    1 - Criar um .kml de pontos no Google Earth com os pontos que irão corresponder as nossas fofos;

    2 - Abrir esse .kml e as fotos que queremos georeferenciar com o GPS Prune e conectamos os elementos manualmente (Passo 3 e 4)

    3 - Exportar para kmz (Passo 5) e, para exif (Passo 6)

    Espero que ajude

    ResponderEliminar
  3. show! fiz aqui e deu tudo certo...

    valew pela dica.

    ResponderEliminar
  4. As minhas fotos já tem a coordenada embutida nelas, não há arquivos .gpx.
    Eu faço todo o procedimento e quando exporto para kmz os pontos ficam nos locais certo mas as imagens não aparecem. Fica como se ela tivesse que carregar mas ficam todas em branco.
    Alguma sugestão?

    ResponderEliminar
    Respostas
    1. Observe a imagem do quinto passo. Você marcou a última opção?

      Eliminar
    2. Tive o mesmo problema. A última opção está marcada. E agora?

      Eliminar
  5. Uma vez que as fotos já têm a tag com as coordenadas, o procedimento deverá se mais simples. Por exemplo: https://support.google.com/picasa/answer/43897?hl=en

    ResponderEliminar
    Respostas
    1. Isso, para quem usa Picasa.

      Em português: Visualizar fotos com geo-tags no Google Earth.

      Aliás, tenho uma dúvida a respeito de usar o Picasa para gerar o arquivo KMZ: Será necessário fazer upload das fotos no Picasa Web, para o destinatário do arquivo poder ver as fotos? Ou a intenção é somente possibilitar a visualização das miniaturas embutidas?

      Interessante que também é possível usar o Picasa para adicionar as geo-tags nas fotos: Adicionar geo-tags no Picasa.

      Eliminar
  6. Como eu faço para deletar uma foto minha?

    ResponderEliminar
    Respostas
    1. De onde? Você refere-se a retirar uma das miniaturas de dentro do KMZ já gerado?

      Eliminar
  7. Aqui, o sexto passo só dá certo se eu opto por desprezar erros menores. Se não, ele erra para salvar as imagens resultado. Não sei o que pode estar acontecendo. Estou inseguro quanto a se as novas imagens tem algo a menos do que as originais.

    Sistema operacional: Ubuntu 12.04.4 LTS.

    ResponderEliminar
    Respostas
    1. Olá Alexandre,

      É susposto as imagens permacerem inalteradas no que diz respeito à sua resolução. Mas há muito tempo que não utilizao este programa, poderei estar enganado. Terá de experimentar.

      Eliminar
    2. Eu experimentei. Antes de perguntar. Não parece haver perdas. Mas fico pulga atrás da orelha: se o arquivo não fica corrompido ou a imagem com algum defeito.

      Eliminar
  8. Tentei salvar o trabalho clicando Arquivo → Salvar. Notei que trata-se de um CSV. O problema é que ao reabri-lo o programa não mostra a mesma coisa. O traço ganha imprecisões e as fotos ficam deslocadas dos pontos configurados. Como evitar isso e ter o trabalho realmente salvo?

    ResponderEliminar
  9. Alexandre,

    Infelizmente não tenho o programa instalado e não o utilizo há muito tempo. Haverá outras opções como formato para salvar? Experimente guardar o CSV na mesma directoria das fotos e do gpx.

    ResponderEliminar
    Respostas
    1. Eu uso o Ubuntu e para instalar eu precisei apenas de dois comandos:

      sudo apt-get install gpsprune
      sudo apt-get install libimage-exiftool-perl

      O segundo comando, na realidade, é para instalar o exiftool.

      Sim, há outros formatos, mas é para "exportar", não para "salvar". Depois vou testá-los.

      Dentro do CSV não há referências para os arquivos de imagem. Então não faria diferença estar tudo no mesmo diretório.

      Eliminar
  10. Não estou conseguindo correlacionar as fotos, aparece uma msg dizendo que todas elas estão fora do intervalo de tempo e rota

    ResponderEliminar
    Respostas
    1. Você fez o terceiro passo? Tente fazê-lo em mais de um par foto/ponto.

      Eliminar
  11. Amigo, bom dia!

    Você sabe se eu tiver um kmz com atributos e classes de cores definidos para os pontos e depois atribuir uma foto, esses são perdidos?

    Obrigado!

    ResponderEliminar
  12. Olá Alexandre,
    Quando utilizava o Picasa, essa marcação era feira de forma muito tranquila com o apoio do software. Mas foi descontinuado.
    Sabe se existe algum outro programa com essa função?

    ResponderEliminar
    Respostas
    1. Você se refere a que marcação? GPS Prune não lhe serve?

      Eliminar
  13. Bom dia!
    Ao realizar o 4º passo aparece a informação em tela de que "Não existem data-hora nos dados dos pontos, assim não há nada para correlacionar com as fotos". Percebi que a informação da hora da foto não faz parte da propriedade do ponto, e aparece apenas como um comentário. Utilizei o GPS Garmin 60Csx e o software MapSource para importação dos dados. Meu questionamento é como atribuir a hora da marcação do ponto como uma propriedade do mesmo.

    ResponderEliminar
    Respostas
    1. Se eu lhe entendi, você precisará processar esses arquivos para torná-los adequados.

      Eliminar
  14. Alexandre, não sou um expert na área. Como eu poderia fazer o processamento destes arquivos?

    Lhe agradeço a atenção.

    ResponderEliminar
    Respostas
    1. Este comentário foi removido pelo autor.

      Eliminar
    2. O comentário acima foi eliminado por erros de redação. A correção está em comentário abaixo.

      Eliminar
  15. Eu também não sou, no sentido normal de que "nem gosto muito dessas coisas, e então eu não as fico sabendo decorado". Simplesmente não fixa, porque não me interessei, nem pratiquei o bastante. Quando algo me interessa eventualmente, volto a estudar, para fazer suprir a necessidade pontualmente.

    Voltemos a seu caso brevemente. Espero que compreenda que não poderei fazer por você, não poderei resgatar com demasiado detalhe.

    Se você tem a informação em comentário, já tem muito!

    Em um sistema operacional GNU/Linux eu criaria um shell script (programa de linguagem interpretada) usando Bash e a ferramenta de linha de comando exiftool (que na verdade, parece que é Perl). Eu leria cópias dos arquivos e criaria outros, escrevendo corretamente o EXIF usando aquela ferramenta.

    Você pode encontrar algo pronto no GitHub.

    Ou você pode usar uma biblioteca em Python, por exemplo, caso prefira.

    Exemplo de biblioteca:

    https://github.com/smarnach/pyexiftool

    Documentação dessa biblioteca exemplo:

    http://smarnach.github.io/pyexiftool/

    Ou seja, trata-se de um trabalho de desenvolvimento. Eu não posso dá-lo pronto a você. Talvez você queira comprá-lo de alguém em marketplaces de microsserviços tais como Fiverr ou VintePila.

    ResponderEliminar
    Respostas
    1. Alexandre, bom dia!
      Agradeço demais sua atenção. A partir do seu direcionamento eu irei me informar melhor e estudar para me aprofundar no assunto e resolver o problema.

      Eliminar
  16. Este comentário foi removido pelo autor.

    ResponderEliminar