Ajustar una coordenada de latitud y longitud a una cuadrícula
Convierta una coordenada geográfica continua en una dirección de cuadrícula estable mediante un cálculo determinista.
Ejecutar — gratis
Indique la latitud, la longitud y la separación entre nodos en grados decimales; si lo desea, desplace la cuadrícula mediante un origen personalizado. El resultado incluye la coordenada ajustada, los índices enteros de la cuadrícula y los desplazamientos con signo respecto del punto original. Así podrá agrupar, comparar y almacenar coordenadas en caché, además de utilizarlas como celdas espaciales compactas, sin recurrir a un servicio remoto de geocodificación ni a un sistema de información geográfica complejo.
Elija una cuadrícula adecuada para su índice
Una cuadrícula geográfica regular divide la latitud y la longitud en intervalos reproducibles. Para empezar, indique una coordenada y una separación positiva en grados decimales. Una separación menor crea más nodos y conserva mayor detalle posicional; una mayor reúne una zona más extensa bajo una misma coordenada ajustada. La separación se aplica por separado a ambos ejes, por lo que el resultado es una cuadrícula rectangular expresada en unidades angulares. Este método resulta útil para índices espaciales cuantizados, agregaciones, claves de caché, deduplicación aproximada y reducción de precisión orientada a la privacidad. Recuerde que los grados son unidades angulares: la distancia terrestre representada por un grado de longitud disminuye al acercarse a los polos. Si necesita celdas de tamaño casi constante en metros sobre una región amplia, proyecte primero los datos a un sistema de coordenadas plano adecuado. Para conjuntos locales o deliberadamente basados en grados, el ajuste directo suele ser la opción más sencilla y transparente. El cálculo no infiere la separación ni cambia las unidades de manera silenciosa, de modo que cada resultado puede reproducirse a partir de las entradas declaradas.
Controle la alineación mediante el origen
De manera predeterminada, la cuadrícula se ancla en cero grados de latitud y cero grados de longitud. Cada nodo equivale al origen más un múltiplo entero de la separación elegida en cada eje. Puede indicar origin_lat y origin_lon cuando una teselación existente utilice otra alineación. Esto importa porque dos cuadrículas con igual separación pero orígenes distintos generan celdas diferentes. Los índices devueltos expresan el número con signo de pasos desde el origen y sirven como clave compuesta si se conserva también la definición de la cuadrícula. La latitud y la longitud se ajustan de forma independiente. Cuando el punto está exactamente a mitad de camino, el empate se resuelve alejándose del índice cero, con un resultado estable en coordenadas positivas y negativas. En los límites geográficos, el cálculo escoge el nodo más cercano que pertenece a la cuadrícula declarada y permanece dentro de los rangos válidos. Nunca devuelve una latitud superior a 90 grados ni una longitud superior a 180 grados solo porque un nodo aritmético sin límites esté más cerca.
Interprete la coordenada y los desplazamientos
La respuesta devuelve como resultado principal la latitud y la longitud ajustadas, junto con lat_index y lon_index. También informa de los cambios con signo en grados. Un desplazamiento positivo de latitud significa que el nodo está al norte del punto recibido; un desplazamiento negativo de longitud indica que está al oeste. Estos valores permiten auditar cuánta cuantización se introdujo o rechazar registros cuyo desplazamiento supere una política definida por su aplicación. Los resultados se redondean a doce decimales para eliminar ruido irrelevante de coma flotante binaria sin perder detalle por debajo de la separación mínima aceptada. La operación es determinista, no usa red y no conserva estado; por ello, una misma entrada JSON produce exactamente la misma salida en el navegador y mediante la API. Una solicitud procesa una coordenada y cuesta $0.002 mediante la API. En procesos por lotes, invoque la capacidad para cada elemento y guarde la separación y el origen junto con los índices, de forma que otros usuarios puedan reconstruir la definición exacta sin deducirla de los valores ajustados.
Qué puede hacer con ella
Crear claves de caché espaciales
Convierta observaciones cercanas en el mismo par de índices enteros antes de consultar o escribir una caché.
Agregar eventos de ubicación
Agrupe registros puntuales en celdas regulares basadas en grados para obtener recuentos, resúmenes o preparar mapas.
Reducir la precisión geográfica
Sustituya coordenadas detalladas por nodos declarados cuando una aplicación solo necesite ubicaciones aproximadas.
Preguntas frecuentes
¿Cuánto cuesta una solicitud?
Cada solicitud de API cuesta $0.002. La versión del navegador realiza localmente el mismo cálculo determinista.
¿La separación se mide en metros?
No. La separación se expresa en grados decimales y se aplica de forma independiente a la latitud y la longitud.
¿Cómo se resuelven los empates exactos?
Una coordenada situada justo entre dos índices se ajusta alejándose del índice cero, de manera uniforme a ambos lados del origen.
¿Puedo alinear una cuadrícula existente?
Sí. Establezca origin_lat y origin_lon con el ancla de esa cuadrícula y mantenga la misma separación.
¿Puede la salida superar los límites geográficos?
No. El nodo elegido permanece en la cuadrícula declarada y dentro de los rangos válidos de latitud y longitud.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"lat": 37.7749,
"lon": -122.4194,
"spacing_deg": 0.01
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.snap_to_grid",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |