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
SELECT geoToS2(37.79506683, 55.71290588) AS s2Index;┌─────────────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
SELECT s2ToGeo(4704772434919038107) AS s2Coodrinates;┌─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
SELECT s2GetNeighbors(5074766849661468672) AS s2Neighbors;┌─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
Ejemplo
SELECT s2CellsIntersect(9926595209846587392, 9926594385212866560) AS intersect;┌─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
SELECT s2CapContains(1157339245694594829, 1.0, 1157347770437378819) AS capContains;┌─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
SELECT s2CapUnion(3814912406305146967, 1.0, 1157347770437378819, 1.0) AS capUnion;┌─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
SELECT s2RectAdd(5178914411069187297, 5177056748191934217, 5179056748191934217) AS rectAdd;┌─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
SELECT s2RectContains(5179062030687166815, 5177056748191934217, 5177914411069187297) AS rectContains;┌─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
SELECT s2RectUnion(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectUnion;┌─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
SELECT s2RectIntersection(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectIntersection;┌─rectIntersection──────────────────────────┐
│ (5178914411069187297,5177056748191934217) │
└───────────────────────────────────────────┘