Ajustar coordenadas de latitude e longitude a uma grade
Transforme uma coordenada geográfica contínua em um endereço de grade estável com um cálculo determinístico.
Executar grátis
Informe latitude, longitude e espaçamento entre os nós em graus decimais; se necessário, desloque a grade escolhendo uma origem personalizada. O resultado inclui a coordenada ajustada, índices inteiros e deslocamentos com sinal em relação ao ponto original. Assim, você pode agrupar, comparar e armazenar coordenadas em cache, além de usá-las como células espaciais compactas, sem depender de geocodificação remota nem de um sistema de informações geográficas complexo.
Escolha uma grade adequada ao seu índice
Uma grade geográfica regular divide latitude e longitude em intervalos reproduzíveis. Comece informando uma coordenada e um espaçamento positivo em graus decimais. Um espaçamento menor cria mais nós e preserva mais detalhes da posição, enquanto um valor maior reúne uma área mais ampla sob a mesma coordenada ajustada. O espaçamento é aplicado separadamente aos dois eixos, portanto a saída forma uma grade retangular em unidades angulares. Isso é útil para indexação espacial quantizada, agregação, chaves de cache, deduplicação aproximada e redução de precisão para proteção da privacidade. Lembre-se de que graus são unidades angulares: a distância no solo correspondente a um grau de longitude diminui perto dos polos. Se você precisar de células com tamanho quase constante em metros sobre uma região extensa, projete os dados em um sistema de coordenadas plano apropriado antes de aplicar uma grade métrica. Para conjuntos locais ou intencionalmente baseados em graus, o ajuste direto costuma ser a solução mais simples e transparente. O cálculo não deduz o espaçamento nem altera unidades silenciosamente, portanto todo resultado pode ser reproduzido a partir das entradas declaradas.
Controle o alinhamento pela origem
Por padrão, a grade fica ancorada em zero grau de latitude e zero grau de longitude. Cada nó corresponde à origem somada a um múltiplo inteiro do espaçamento escolhido em cada eixo. Você pode fornecer origin_lat e origin_lon quando um mosaico existente usar outro alinhamento. Isso é importante porque duas grades com o mesmo espaçamento, mas origens diferentes, produzem células distintas. Os índices retornados representam o número com sinal de passos desde a origem e formam uma chave composta prática quando a definição da grade é armazenada junto deles. Latitude e longitude são ajustadas de modo independente. Se o ponto estiver exatamente no meio, o empate é resolvido para longe do índice zero, garantindo um resultado estável em coordenadas positivas e negativas. Nos limites geográficos, o cálculo escolhe o nó mais próximo que pertence à grade declarada e permanece nos intervalos válidos. Ele nunca retorna latitude acima de 90 graus nem longitude acima de 180 graus apenas porque um nó aritmético sem restrição estaria mais perto.
Interprete a coordenada e os deslocamentos
A resposta apresenta latitude e longitude ajustadas como resultado principal, acompanhadas por lat_index e lon_index. Ela também informa as variações com sinal em graus. Um deslocamento positivo de latitude indica que o nó está ao norte do ponto enviado; um deslocamento negativo de longitude indica que está a oeste. Esses valores permitem auditar a quantização introduzida ou rejeitar registros cujo deslocamento exceda uma política da sua aplicação. Os resultados são arredondados para doze casas decimais, removendo ruído irrelevante de ponto flutuante binário sem perder detalhes abaixo do menor espaçamento aceito. A operação é determinística, não usa rede e não mantém estado; assim, a mesma entrada JSON gera a mesma saída no navegador e pela API. Uma solicitação processa uma coordenada e custa US$ 0,002 pela API. Em fluxos em lote, chame a capacidade para cada item e guarde espaçamento e origem com os índices, para que futuros leitores reconstruam a definição exata da grade em vez de tentar deduzi-la dos valores ajustados.
Casos de uso
Criar chaves de cache espaciais
Converta observações próximas no mesmo par de índices inteiros antes de consultar ou gravar um cache.
Agregar eventos de localização
Agrupe registros pontuais em células regulares baseadas em graus para contagens, resumos ou preparação de mapas.
Reduzir a precisão de coordenadas
Troque coordenadas detalhadas por nós declarados quando a aplicação precisar apenas de localizações aproximadas.
Perguntas frequentes
Quanto custa uma solicitação?
Cada solicitação de API custa US$ 0,002. A versão no navegador executa localmente o mesmo cálculo determinístico.
O espaçamento é medido em metros?
Não. O espaçamento é expresso em graus decimais e aplicado separadamente à latitude e à longitude.
Como os empates exatos são resolvidos?
Uma coordenada exatamente entre dois índices é ajustada para longe do índice zero, de forma consistente nos dois lados da origem.
Posso alinhar uma grade existente?
Sim. Defina origin_lat e origin_lon como a âncora dessa grade e mantenha o mesmo espaçamento.
A saída pode ultrapassar os limites geográficos?
Não. O nó escolhido permanece na grade declarada e dentro dos intervalos válidos de latitude e longitude.
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/geo/snap-to-grid \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":37.7749,"lon":-122.4194,"spacing_deg":0.01}'const res = await fetch("https://api.kit.forhosting.com/geo/snap-to-grid", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat": 37.7749,
"lon": -122.4194,
"spacing_deg": 0.01
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/snap-to-grid",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat": 37.7749,
"lon": -122.4194,
"spacing_deg": 0.01
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/snap-to-grid", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat":37.7749,"lon":-122.4194,"spacing_deg":0.01}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat":37.7749,"lon":-122.4194,"spacing_deg":0.01}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/snap-to-grid", 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
{
"lat": 37.7749,
"lon": -122.4194,
"spacing_deg": 0.01
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.snap_to_grid",
"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.
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. |