ForHosting KIT · Viajes y geografía

Cara del cubo S2 desde lat/lon: qué cara contiene el punto

Averigüe en cuál de las seis caras del cubo S2 cae un punto: San Francisco, en (37,7749; -122,4194), queda en la cara 4, la -Y, con u -0,918061185048 y v -0,635094359374. Es el primer paso antes de construir celdas S2. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
Latitud
37,7749
Longitud
-122,4194
Obtiene
Cara
4
Nombre de la cara
-Y
X
-0,4237560025
Y
-0,6672331383

La biblioteca de geometría S2 de Google divide la Tierra proyectando la esfera unitaria sobre un cubo y subdividiendo de forma recursiva cada cara en una jerarquía de celdas. Antes de codificar un identificador de celda S2, calcular una cobertura o razonar sobre la intersección de regiones, es necesario saber cuál de las seis caras de ese cubo contiene una latitud y una longitud dadas. Esta capacidad acepta latitud y longitud WGS84, las convierte en un vector de dirección unitario y devuelve el índice de cara S2 (de 0 a 5), un nombre legible como +X o -Z, los componentes cartesianos unitarios y las coordenadas UV del punto sobre esa cara en el intervalo convencional de menos uno a más uno. Utilícela cuando construya índices espaciales, enseñe geometría esférica o valide que sus propios enlaces a S2 eligen la misma cara que la biblioteca de referencia en los bordes entre caras.

Cómo lat/lon se convierte en una cara del cubo S2

Parta de la latitud y la longitud en grados decimales sobre la esfera WGS84. Convierta la latitud en un ángulo polar respecto del ecuador y la longitud en un acimut desde el meridiano de Greenwich, ambos en radianes. El vector de dirección unitario es entonces x igual a cos(latitud) cos(longitud), y igual a cos(latitud) sin(longitud) y z igual a sin(latitud), con z positivo hacia el polo norte y x positivo hacia latitud cero y longitud cero.

Las seis caras del cubo S2 corresponden a los seis semiespacios definidos por el eje cartesiano dominante: la cara cero es la cara más X, la uno más Y, la dos más Z, la tres menos X, la cuatro menos Y y la cinco menos Z.

La implementación sigue la misma regla del componente de mayor valor absoluto que usa la biblioteca S2 de Google: se comparan los valores absolutos de x, y y z; el eje de mayor magnitud decide el par de caras; el signo de ese componente decide cuál de las dos caras opuestas se elige. En empates exactos gana el índice de eje mayor, igual que LargestAbsComponent de S2, de modo que los puntos en las uniones entre caras se resuelven de forma determinista.

Una vez conocida la cara, las coordenadas UV sobre ella se obtienen dividiendo los dos componentes no dominantes por el dominante con los cambios de signo específicos de cada cara publicados en ValidFaceXYZToUV de S2, produciendo valores en el intervalo cerrado de menos uno a más uno que sitúan el punto dentro de la cara cuadrada antes de aplicar cualquier jerarquía de celdas adicional.

Dónde aporta valor la consulta de cara S2

Los generadores educativos y de exámenes que enseñan rejillas globales discretas pueden pedir a los alumnos la cara de una ciudad y calificar frente a un oráculo determinista en lugar de cuadernos docentes inestables. Las canalizaciones de analítica de registros que agrupan muestras GPS por cara S2 para enrutado grueso o divisiones geográficas A/B llaman una vez por evento y guardan el entero de cara junto a las coordenadas brutas. La validación fallida no consume saldo.

Mantenga las peticiones pequeñas, fije el entero de cara y el UV redondeado en las pruebas, y obtendrá una asignación de cara reproducible para índices, lecciones y workers de borde sin levantar una pila completa de geometría esférica propia.

Preámbulo de codificación de celdas S2

Resuelva cuál de las seis caras del cubo contiene un lat/lon antes de calcular identificadores de celda S2 jerárquicos o coberturas de región en un worker que no puede cargar la biblioteca S2 completa.

Enseñanza de rejillas globales discretas

Permita que los alumnos envíen coordenadas de ciudades y comprueben el índice de cara frente a un oráculo que sigue la regla del componente de mayor valor absoluto de Google, incluidos polos y uniones entre caras.

Agrupación geográfica gruesa

Agrupe eventos GPS por cara S2 para paneles de enrutado o divisiones geográficas A/B sin calcular identificadores de celda completos en cada muestra.

¿Cómo se obtiene la cara del cubo S2 de una latitud y una longitud?

Envíe lat finita en [-90, 90] y lon en [-180, 180].

¿Qué significan las caras de 0 a 5?

Siguen la convención S2 de Google: 0=+X, 1=+Y, 2=+Z (norte), 3=-X, 4=-Y, 5=-Z (sur). La elección es el componente cartesiano de mayor valor absoluto del vector unitario.

¿Qué son u y v en la respuesta?

Las coordenadas UV sitúan el punto sobre la cara del cubo elegida en el intervalo [-1, 1], con las mismas convenciones de signo ValidFaceXYZToUV que S2.

¿Qué ocurre si la latitud o la longitud están fuera de rango?

La latitud debe estar en [-90, 90] y la longitud en [-180, 180]; las peticiones inválidas no se facturan.

¿Qué cara recibe un punto justo en la arista entre dos caras?

El empate se resuelve siempre igual: si dos componentes del vector unitario son igual de grandes, gana el eje de índice más alto. Así los puntos de las aristas no saltan de una cara a otra entre cálculos.

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.

POSThttps://api.kit.forhosting.com/geo/s2-face-from-latlon

¿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.

curl -X POST https://api.kit.forhosting.com/geo/s2-face-from-latlon \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lat":37.7749,"lon":-122.4194}'
{
  "lat": 37.7749,
  "lon": -122.4194
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "geo.s2_face_from_latlon",
  "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.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

El algoritmo es matemática analítica pura, sin llamadas de red ni estado aleatorio, de modo que la ruta gratuita del navegador y la ruta de API de pago siempre coinciden.

Contrato de entrada, campos de respuesta y errores de validación

Ejemplo: San Francisco cerca de latitud 37.7749 y longitud negativa 122.4194 cae en la cara cuatro (menos Y) porque el componente de mayor valor absoluto del vector unitario es una y negativa. El polo norte (latitud 90, longitud 0) cae en la cara dos (más Z). La longitud cero ecuatorial (latitud 0, longitud 0) cae en la cara cero (más X). Combine esta respuesta con su propio codificador de celdas S2 si necesita identificadores de celda completos; este extremo solo identifica la cara y la posición UV sobre ella. Envíe por POST un cuerpo JSON con dos números finitos obligatorios: lat (o el alias latitude) entre menos noventa y noventa inclusive, y lon (o los alias lng y longitude) entre menos ciento ochenta y ciento ochenta inclusive. Las cadenas numéricas se aceptan igual que los números JSON. Los campos ausentes, las cadenas vacías, los valores no finitos como NaN o Infinity y las latitudes o longitudes fuera de rango fallan con invalid_input y no se facturan. En caso de éxito la respuesta devuelve lat y lon limpios, el entero face de cero a cinco, face_name como uno de +X, +Y, +Z, -X, -Y o -Z, los componentes del vector unitario x, y y z, el par UV local de la cara u y v, y method igual a s2_face_from_unit_sphere para que los clientes documenten la proyección usada.

Dónde aporta valor la consulta de cara S2

Las plataformas de mapas y SIG que exponen identificadores de celda S2 para coberturas de región necesitan un primer paso de comprobación de cara que coincida con la biblioteca que usan en producción; una API parse pequeña evita empaquetar un enlace completo de C++ o Java en cada worker de borde solo para saber sobre qué cara del cubo cae un pin. Como la implementación es parse pura de nivel A, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo ni red saliente.

¿Cuánto cuesta la herramienta de cara del cubo S2 desde lat/lon?

La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago de KIT a $0.002 por llamada exitosa; la entrada inválida no se factura.

Ver la documentación completa del KIT →