Georreferenciação manual de fotos para Mapillary

Depois de tomar conhecimento da existência de várias ferramentas e serviços, e analisar/experimentar algumas coisas, cheguei à conclusão de que vale propor o que esse tópico mostra. Porém, ainda existem algumas “dificuldades” e, depois delas contornadas, isso só terá serventia para quem quiser georreferenciar fotos de uma maneira totalmente manual.

Como quem já experimentou já pode saber, o Mapillary tem algumas exigências para o envio manual de fotos:

Por outro lado, a comunidade de software livre e código aberto tem à disposição, feito em Java, o software Geotag:

A proposta dele é capacitar os arquivos das fotos exatamente com aqueles metadados que o Mapillary exige!

Download e execução são muito fáceis e práticos:

Mas existem dois problemas graves:

1) Talvez o mais importante. O Geotag está usando API Google, como pode ser inferido da observação do primeiro screenshot acima.

2) O Mapillary não entendeu a gravação padrão do EXIF que fora feita pelo Geotag em meu teste de caso de uso:

Mesmo depois de enviado ao servidor o arquivo, parece que o arquivo foi considerado inválido. Ele não aparece em “My Uploads”.

Pode ser a formatação dos dados… a estória do Datum, ou sei lá o quê.

Acho que a questão da dependência do Google pode ser contornada implementando-se um novo map.js. Enviei e-mail para o autor perguntando alguma coisa. Vou terminar convertendo o repositório CVS em repositório Git e colocando o candidato a fork no Github. Não podemos usar o Google! O problema é que provavelmente eu não terei tempo… Alguém mais tem interesse em trabalhar com isso? No pior das hipóteses, é o caminho mais curto que tenho encontrado para poder usar Mapillary sem a aplicação móvel.

Os plugins do JOSM não trabalham com a direção GPS.

O GpsPrune não cria pontos e não trabalha com a direção GPS.

O tux-00/pygtk-osmissue 9 — é um caminho mais longo.

Update

O erro com o Mapillary tem grande chance de ser apenas um erro do Mapillary.

O bug do Mapillary foi corrigido.

Sendo assim, vou fazer o seguinte.

  1. Usar JOSM com o plugin de ajuste manual de coordenadas

  2. Usar JOSM com o plugin de gravação de metadados GPS no EXIF

  3. Fazer em lot algo como exiftool -GPSImgDirection=0 SAM_9054.JPG Encontrar outra solução!

  4. Enviar manualmente o conjunto de fotos para o Mapillary

Deixar o Geotag de canto, por enquanto.

Update

Pensando bem…
Fazer GPSImgDirection=0 não é interessante para o Mapillary. Eles fazem aprovação manual de cada alteração.
É melhor voltar à intenção de deixar o Geotag mais independente do Google.

Interagi com o o autor do Geotag através de duas issues:

Ele não vai adotar Git — que, na minha opinião, é uma ferramenta “mais comunitária” do que CVS — e não demonstrou interesse em adequar o Geotag ao trabalho de mapeadores OpenStreetMap.

Tratar-se-ia de trabalhar uma alternativa ao Google como dependência tecnológica e jurídica, tornando a configuração opcional ou não. Quando o Geotag mostra o grande zoom das imagens de satélite do Google, isso certamente impressiona o usuário. Uma experiência menos rica aconteceria se as imagens fossem as do Mapbox Satellite, por exemplo. Provavelmente o Bing não poderia ser utilizado gratuitamente. E é verdade que a atribuição do valor de GPSImgDirection tende a ser mais precisa com maior resolução das imagens de satélite usadas.

Tenho o repositório Git convertido, do Geotag 0.094. Porém, por que eu não tenho realmente tempo para mexer nisso, não coloquei um fork independente no Github. Não faria sentido. E seria um sufocamento para mim, mesmo que talvez a modificação fosse restrita à criação de um novo arquivo map.js (com LeafletJS, provavelmente).

Então resolvi explorar outro caminho mais fácil para mim e escrevi à equipe do Mapillary:

Não faço ideia do que vai dar. Se vai dar em algo. Por enquanto, fico sem poder dar utilidade mais ampla (colaborativa, pública e documental) às fotos que tenho aqui. Mesmo as que já são georreferenciadas, não trazem o GPSImgDirection.

Não se deve fazer o GPSImgDirection=0 sem o consentimento do pessoal do Mapillary. Seria degradar o produto deles.

O pessoal do Mapillary deu sinal verde para trabalharmos com upload manual de imagens que tenham GPSImgDirection=0. Sendo assim, vou preparar um tutorial mostrando o processo de georreferenciação manual que escolhi pra mim.

Legal. Não pretendo usar, mas é sempre bom termos alternativas.

[]s

Fotos “isoladas” de POIs também são aceitas. Ver issue 181.

Descobri que o jeito mais simples de fazer o georeferenciamento de imagens se você está de posse de um arquivo gpx é usando o próprio exiftool

 exiftool -geosync=-1:07 -geotag track.gpx pasta

onde pasta é a localização das imagens e -geosync faz o ajuste do atraso entre imagens e o tracklog. Com isto eu agora estou fazendo o upload para o Mapillary de fotos adquiridas com a câmera GoPro.

Pode ser o mais “simples”, mas o GPX precisa corresponder inteiramente ao conjunto das fotos. Para outros casos, o GpsPrune possibilita um trabalho mais “visual” sem perder em automação.

Há a questão do GPSImgDirection. Seu GPX tem ele? Foi gravado em que dispositivo?

Eu tirei muitas fotos tempos atrás com uma câmera simples e ao mesmo tempo coletando trilhas com um data logger Holux 1000-C. Ele não gera informação necessária para determinar GPSImgDirection :frowning:
O GeoTag é interessante, mas como o Alexandre bem detalhou, tem uma obervação quanto a API que utiliza.
Nunca tinha usado o exiftool. Bom saber, vou precisar qualquer hora :slight_smile: Usava o GpsCorrelate

Um problema com o GeoTag é ele usar a API da Google. O operador orientar suas imagens com base nisso, e usá-las em Mapillary, pode não ser seguro juridicamente, apesar de “a princípio talvez” não haver como rastrear tal coisa.

Fica a questão da consciência!

Quero lembrar que o pessoal do Mapillary aceita GPSImgDirection=0. O ajuste fino e manual poderia então ser realizado através do próprio site, baseando-se nas imagens aéreas da camada Mapbox Satellite.

Quem quiser mudar essa situação, quase que só precisa implementar um novo map.js para o GeoTag, partindo de pesquisa que registrei em comentário da issue #35. Se quiser um repositório Git, tenho o .tar.gz por aqui.

Verdade, esqueci de comentar sobre esse fator da API do GeotTag que você jpa tinha mencionado. Por isso e por questões de preferência, eu me interessei mais pelo exiftool, que permite setar o GPSImgDirection via terminal… eu gostava do GpsPhotoCorrelate para geotaguear e upar fotos no OpenStreetView.org, mas o GpsPhotoCorrelate não é o suficiente para o Mapillary.

Compartilhando alguns resultados com envio manual de fotos, usando exiftool ou scripts Mapillary. Essas ferramentas sempre me ajudam https://github.com/edilqueirozdearaujo/image-scripts. Mais sobre > http://rede.acessasp.sp.gov.br/blogada/enviando-para-mapillary-fotos-de

Legal!

Essa semana acabei escrevendo em JS uma ferramenta para interpolar GPX entrando manualmente a informação de data/hora, o que pode ser útil para “bolar” um GPX a partir de uma rota aonde não se tem sinal GPS (túneis, por exemplo).

https://www.openstreetmap.org/user/Nighto/diary/37313

https://nighto.github.io/gpxcrafttime

[]s