Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funciones para trabajar con el índice S2

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

Querysql
SELECT geoToS2(37.79506683, 55.71290588) AS s2Index;
Responsetext
┌─────────────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

Querysql
SELECT s2ToGeo(4704772434919038107) AS s2Coodrinates;
Responsetext
┌─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

Querysql
SELECT s2GetNeighbors(5074766849661468672) AS s2Neighbors;
Responsetext
┌─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

Querysql
SELECT s2CellsIntersect(9926595209846587392, 9926594385212866560) AS intersect;
Responsetext
┌─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

Querysql
SELECT s2CapContains(1157339245694594829, 1.0, 1157347770437378819) AS capContains;
Responsetext
┌─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

Querysql
SELECT s2CapUnion(3814912406305146967, 1.0, 1157347770437378819, 1.0) AS capUnion;
Responsetext
┌─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

Querysql
SELECT s2RectAdd(5178914411069187297, 5177056748191934217, 5179056748191934217) AS rectAdd;
Responsetext
┌─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

Querysql
SELECT s2RectContains(5179062030687166815, 5177056748191934217, 5177914411069187297) AS rectContains;
Responsetext
┌─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

Querysql
SELECT s2RectUnion(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectUnion;
Responsetext
┌─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

Querysql
SELECT s2RectIntersection(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectIntersection;
Responsetext
┌─rectIntersection──────────────────────────┐
│ (5178914411069187297,5177056748191934217) │
└───────────────────────────────────────────┘
Navigation