Analisar GPS EXIF da imagem
Transforme os graus, minutos e segundos que a câmera gravou nas coordenadas decimais que um mapa entende, como 40,446333333333 e -79,982333333333. A letra N, S, E ou W define o sinal, então sul e oeste saem negativos. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Latitude
- 40, 26, 46,8
- Referência de latitude
- N
- Longitude
- 79, 58, 56,4
- Referência de longitude
- W
- Latitude
- 40,4463333333
- Longitude
- -79,9823333333
- Latitude (GMS)
- 40, 26, 46,8
- Longitude (GMS)
- 79, 58, 56,4
Os metadados de uma imagem geralmente armazenam a localização em quatro tags GPS EXIF separadas, e não em coordenadas decimais comuns. Norte e leste geram valores positivos; sul e oeste, negativos.
Associe as tags GPS EXIF brutas aos campos de entrada
EXIF representa o local da foto com GPSLatitude, GPSLatitudeRef, GPSLongitude e GPSLongitudeRef. Uma biblioteca EXIF costuma fornecer a primeira e a terceira tag como três números na ordem graus, minutos e segundos. Não coloque sinal negativo nos valores DMS, pois a referência define o sinal.
Letras minúsculas são normalizadas para maiúsculas. Cada array deve ter exatamente três números finitos. Minutos e segundos precisam ser maiores ou iguais a zero e menores que sessenta.
A ferramenta espera tags previamente extraídas e não decodifica o arquivo de imagem; use-a depois do leitor EXIF da sua aplicação.
Use coordenadas decimais com segurança em fotos
Após a conversão, você pode gravar as coordenadas em GeoJSON, exibi-las em mapas, indexá-las para busca por proximidade ou compará-las com outros registros. Preservar as referências normalizadas e os arrays DMS facilita auditorias. Considere tags ausentes ou inválidas como falhas de qualidade, e não como zero, pois a posição zero, zero é real.
O analisador rejeita números não finitos, arrays incompletos, componentes fora do intervalo e pontos além dos polos ou do antimeridiano. Ele não confirma a posição real da câmera, não corrige diferenças de datum e não avalia privacidade. Antes de publicar fotos, verifique se coordenadas precisas devem ser expostas.
Casos de uso
Normalizar um acervo fotográfico
Converta arrays GPS EXIF extraídos em coordenadas decimais consistentes antes de indexar uma coleção.
Validar uma ingestão EXIF
Rejeite letras corrompidas e componentes DMS impossíveis antes de armazenar a localização em produção.
Perguntas frequentes
A ferramenta lê o arquivo de imagem?
Não. Ela converte tags GPS EXIF que você já extraiu com um leitor EXIF.
Quais letras de referência são válidas?
Latitude aceita N ou S, e longitude aceita E ou W, sem diferenciar maiúsculas.
Como os valores DMS são convertidos?
A magnitude é graus mais minutos divididos por 60 mais segundos divididos por 3600. S e W tornam o resultado negativo.
Minutos ou segundos podem ser 60?
Não. Eles devem ser maiores ou iguais a zero e menores que 60. Normalize o transporte antes de analisar.
Preciso colocar sinal de menos para sul ou oeste?
Não. Digite graus, minutos e segundos como números positivos e deixe a letra de referência definir a direção: S deixa a latitude negativa. Do mesmo modo, W deixa a longitude negativa.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/image/exif-gps-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"latitude":[40,26,46.8],"latitude_ref":"N","longitude":[79,58,56.4],"longitude_ref":"W"}'const res = await fetch("https://api.kit.forhosting.com/image/exif-gps-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"latitude": [
40,
26,
46.8
],
"latitude_ref": "N",
"longitude": [
79,
58,
56.4
],
"longitude_ref": "W"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/exif-gps-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"latitude": [
40,
26,
46.8
],
"latitude_ref": "N",
"longitude": [
79,
58,
56.4
],
"longitude_ref": "W"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/exif-gps-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"latitude":[40,26,46.8],"latitude_ref":"N","longitude":[79,58,56.4],"longitude_ref":"W"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"latitude":[40,26,46.8],"latitude_ref":"N","longitude":[79,58,56.4],"longitude_ref":"W"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/exif-gps-parse", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"latitude": [
40,
26,
46.8
],
"latitude_ref": "N",
"longitude": [
79,
58,
56.4
],
"longitude_ref": "W"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.exif_gps_parse",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 15 |
max_megapixels | 12 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Este analisador recebe graus, minutos e segundos de latitude e longitude com suas letras de referência, valida os valores brutos e devolve coordenadas decimais com sinal. Assim, equipes de desenvolvimento, acervo e investigação obtêm uma conversão determinística para usar logo após um leitor EXIF.
Associe as tags GPS EXIF brutas aos campos de entrada
Envie esses arrays como latitude e longitude e as letras correspondentes como latitude_ref e longitude_ref. A latitude não pode ultrapassar noventa graus e a longitude, cento e oitenta; no limite máximo, minutos e segundos devem ser zero. Essas verificações identificam metadados inválidos antes que cheguem a mapas, bancos de dados ou índices geoespaciais.
Entenda a conversão e a validação das referências
Em cada eixo, o analisador soma graus, minutos divididos por sessenta e segundos divididos por três mil e seiscentos. A resposta inclui letras normalizadas e os arrays DMS validados, além das coordenadas decimais. Em seguida, aplica a direção indicada: N mantém a latitude positiva, S a torna negativa, E mantém a longitude positiva e W a torna negativa. O resultado é arredondado em doze casas para produzir JSON estável. A validação é rigorosa: latitude_ref aceita apenas N ou S, enquanto longitude_ref aceita apenas E ou W. Qualquer outra letra, palavra, texto vazio ou referência do eixo errado devolve invalid_input sem tentar adivinhar. Isso impede que uma referência corrompida mova uma foto para o outro lado do equador ou do meridiano principal. Todo o processamento é aritmético e determinístico, sem rede, relógio, aleatoriedade ou modelo externo; portanto, a função se comporta igualmente no navegador, na API, em testes e em integrações JavaScript offline.
Use coordenadas decimais com segurança em fotos
Mantenha o par unido e observe a ordem dos eixos: a resposta apresenta latitude antes de longitude, mas alguns formatos geométricos usam longitude primeiro. Em um fluxo automático, processe apenas as quatro tags completas, trate invalid_input como registro rejeitado e mantenha a origem da imagem. O navegador executa localmente; a automação pela API custa US$ 0,002 por item válido.
Casos de integração
Posicionar fotos em um mapa
Transforme metadados da câmera na latitude e longitude com sinal esperadas por mapas e fluxos GeoJSON.
Perguntas técnicas
Quanto custa uma chamada de API?
Cada solicitação bem-sucedida custa US$ 0,002 por item. O navegador realiza localmente o mesmo cálculo determinístico.