Saltar al contenido principal

S2Index

S2 es un sistema de indexación geográfica en el que todos los datos geográficos se representan sobre una esfera (similar a un globo terráqueo). En la biblioteca S2, los puntos se representan como el índice S2: un número específico que codifica internamente un punto en la superficie de una esfera unitaria, a diferencia de los pares tradicionales (latitud, longitud). Para obtener el índice S2 de un punto determinado especificado en el formato (latitud, longitud), use la función geoToS2. Además, puede usar la función s2ToGeo para obtener las coordenadas geográficas correspondientes al índice S2 especificado.

geoToS2

Devuelve el índice de punto S2 correspondiente a las coordenadas dadas (longitude, latitude). Sintaxis
geoToS2(lon, lat)
Argumentos Valores devueltos
  • Índice de punto S2. UInt64.
Ejemplo
Query
SELECT geoToS2(37.79506683, 55.71290588) AS s2Index;
Response
┌─────────────s2Index─┐
│ 4704772434919038107 │
└─────────────────────┘

s2ToGeo

Devuelve las coordenadas geográficas (longitude, latitude) correspondientes al índice de punto S2 proporcionado. Sintaxis
s2ToGeo(s2index)
Argumentos
  • s2index — índice S2. UInt64.
Valores devueltos Ejemplo
Query
SELECT s2ToGeo(4704772434919038107) AS s2Coodrinates;
Response
┌─s2Coodrinates────────────────────────┐
│ (37.79506681471008,55.7129059052841) │
└──────────────────────────────────────┘

s2GetNeighbors

Devuelve los índices S2 vecinos correspondientes al S2 proporcionado. Cada celda del sistema S2 es un cuadrilátero delimitado por cuatro geodésicas. Por lo tanto, cada celda tiene 4 vecinos. Sintaxis
s2GetNeighbors(s2index)
Argumentos
  • s2index — índice S2. UInt64.
Valor devuelto
  • Un array compuesto por 4 índices vecinos: array[s2index1, s2index3, s2index2, s2index4]. Array(UInt64).
Ejemplo
Query
SELECT s2GetNeighbors(5074766849661468672) AS s2Neighbors;
Response
┌─s2Neighbors───────────────────────────────────────────────────────────────────────┐
│ [5074766987100422144,5074766712222515200,5074767536856236032,5074767261978329088] │
└───────────────────────────────────────────────────────────────────────────────────┘

s2CellsIntersect

Determina si las dos celdas S2 proporcionadas se intersectan entre sí o no. Sintaxis
s2CellsIntersect(s2index1, s2index2)
Argumentos
  • siIndex1, s2index2 — índice S2. UInt64.
Valor devuelto
  • 1 — Si las celdas se intersecan. UInt8.
  • 0 — Si las celdas no se intersecan. UInt8.
Ejemplo
Query
SELECT s2CellsIntersect(9926595209846587392, 9926594385212866560) AS intersect;
Response
┌─intersect─┐
│         1 │
└───────────┘

s2CapContains

Determina si un casquete contiene un punto S2. Un casquete representa una parte de la esfera separada por un plano. Se define mediante un punto sobre una esfera y un radio en grados. Sintaxis
s2CapContains(center, degrees, point)
Argumentos
  • center — Índice de punto S2 correspondiente al casquete. UInt64.
  • degrees — Radio del casquete en grados. Float64.
  • point — Índice de punto S2. UInt64.
Valor devuelto
  • 1 — Si el casquete contiene el índice de punto S2. UInt8.
  • 0 — Si el casquete no contiene el índice de punto S2. UInt8.
Ejemplo
Query
SELECT s2CapContains(1157339245694594829, 1.0, 1157347770437378819) AS capContains;
Response
┌─capContains─┐
│           1 │
└─────────────┘

s2CapUnion

Determina el casquete más pequeño que contiene los dos casquetes de entrada indicados. Un casquete representa una porción de la esfera seccionada por un plano. Se define mediante un punto de la esfera y un radio en grados. Sintaxis
s2CapUnion(center1, radius1, center2, radius2)
Argumentos
  • center1, center2 — índices de punto S2 que corresponden a los dos casquetes de entrada. UInt64.
  • radius1, radius2 — radio de los dos casquetes de entrada, en grados. Float64.
Valores devueltos
  • center — índice de punto S2 correspondiente al centro del casquete más pequeño que contiene los dos casquetes de entrada. UInt64.
  • radius — radio del casquete más pequeño que contiene los dos casquetes de entrada. Float64.
Ejemplo
Query
SELECT s2CapUnion(3814912406305146967, 1.0, 1157347770437378819, 1.0) AS capUnion;
Response
┌─capUnion───────────────────────────────┐
│ (4534655147792050737,60.2088283994957) │
└────────────────────────────────────────┘

s2RectAdd

Aumenta el tamaño del rectángulo envolvente para incluir el punto S2 especificado. En el sistema S2, un rectángulo se representa mediante un tipo de S2Region llamado S2LatLngRect, que representa un rectángulo en el espacio de latitud y longitud. Sintaxis
s2RectAdd(s2pointLow, s2pointHigh, s2Point)
Argumentos
  • s2PointLow — Índice de punto S2 inferior correspondiente al rectángulo. UInt64.
  • s2PointHigh — Índice de punto S2 superior correspondiente al rectángulo. UInt64.
  • s2Point — Índice de punto S2 de destino hasta el que debe ampliarse el rectángulo delimitador para incluirlo. UInt64.
Valores devueltos
  • s2PointLow — Identificador de celda S2 inferior correspondiente al rectángulo ampliado. UInt64.
  • s2PointHigh — Identificador de celda S2 superior correspondiente al rectángulo ampliado. UInt64.
Ejemplo
Query
SELECT s2RectAdd(5178914411069187297, 5177056748191934217, 5179056748191934217) AS rectAdd;
Response
┌─rectAdd───────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘

s2RectContains

Determina si un rectángulo dado contiene un punto S2. En el sistema S2, un rectángulo se representa mediante un tipo de S2Region llamado S2LatLngRect, que representa un rectángulo en el espacio de latitud y longitud. Sintaxis
s2RectContains(s2PointLow, s2PointHi, s2Point)
Argumentos
  • s2PointLow — Índice de punto S2 inferior correspondiente al rectángulo. UInt64.
  • s2PointHigh — Índice de punto S2 superior correspondiente al rectángulo. UInt64.
  • s2Point — Índice de punto S2 de destino. UInt64.
Valor devuelto
  • 1 — Si el rectángulo contiene el punto S2 especificado.
  • 0 — Si el rectángulo no contiene el punto S2 especificado.
Ejemplo
Query
SELECT s2RectContains(5179062030687166815, 5177056748191934217, 5177914411069187297) AS rectContains;
Response
┌─rectContains─┐
│            0 │
└──────────────┘

s2RectUnion

Devuelve el rectángulo más pequeño que contiene la unión de este rectángulo y el rectángulo especificado. En el sistema S2, un rectángulo se representa mediante un tipo de S2Region llamado S2LatLngRect, que representa un rectángulo en el espacio de latitud y longitud. Sintaxis
s2RectUnion(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
Argumentos
  • s2Rect1PointLow, s2Rect1PointHi — Índices de punto S2 inferior y superior correspondientes al primer rectángulo. UInt64.
  • s2Rect2PointLow, s2Rect2PointHi — Índices de punto S2 inferior y superior correspondientes al segundo rectángulo. UInt64.
Valores devueltos
  • s2UnionRect2PointLow — Identificador de celda S2 inferior correspondiente al rectángulo resultante de la unión. UInt64.
  • s2UnionRect2PointHi — Identificador de celda S2 superior correspondiente al rectángulo resultante de la unión. UInt64.
Ejemplo
Query
SELECT s2RectUnion(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectUnion;
Response
┌─rectUnion─────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘

s2RectIntersection

Devuelve el rectángulo más pequeño que contiene la intersección entre este rectángulo y el rectángulo dado. En el sistema S2, un rectángulo se representa mediante un tipo de S2Region llamado S2LatLngRect, que representa un rectángulo en el espacio de latitud y longitud. Sintaxis
s2RectIntersection(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
Argumentos
  • s2Rect1PointLow, s2Rect1PointHi — Índices de punto S2 inferior y superior correspondientes al primer rectángulo. UInt64.
  • s2Rect2PointLow, s2Rect2PointHi — Índices de punto S2 inferior y superior correspondientes al segundo rectángulo. UInt64.
Valores devueltos
  • s2UnionRect2PointLow — identificador de celda S2 inferior correspondiente al rectángulo que contiene la intersección de los rectángulos indicados. UInt64.
  • s2UnionRect2PointHi — identificador de celda S2 superior correspondiente al rectángulo que contiene la intersección de los rectángulos indicados. UInt64.
Ejemplo
Query
SELECT s2RectIntersection(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectIntersection;
Response
┌─rectIntersection──────────────────────────┐
│ (5178914411069187297,5177056748191934217) │
└───────────────────────────────────────────┘
Última modificación el 12 de junio de 2026