Pular para o conteúdo principal

S2Index

S2 é um sistema de indexação geográfica em que todos os dados geográficos são representados sobre uma esfera (semelhante a um globo). Na biblioteca S2, os pontos são representados pelo S2 Index — um número específico que codifica internamente um ponto na superfície de uma esfera unitária, em vez dos tradicionais pares (latitude, longitude). Para obter o índice de ponto S2 de um ponto especificado no formato (latitude, longitude), use a função geoToS2. Além disso, você pode usar a função s2ToGeo para obter as coordenadas geográficas correspondentes ao índice de ponto S2 especificado.

geoToS2

Retorna o índice de ponto S2 correspondente às coordenadas fornecidas (longitude, latitude). Sintaxe
geoToS2(lon, lat)
Argumentos Valores retornados
  • Índice de ponto S2. UInt64.
Exemplo
Query
SELECT geoToS2(37.79506683, 55.71290588) AS s2Index;
Response
┌─────────────s2Index─┐
│ 4704772434919038107 │
└─────────────────────┘

s2ToGeo

Retorna as coordenadas geográficas (longitude, latitude) correspondentes ao índice de ponto S2 fornecido. Sintaxe
s2ToGeo(s2index)
Argumentos
  • s2index — S2 Index. UInt64.
Valores retornados Exemplo
Query
SELECT s2ToGeo(4704772434919038107) AS s2Coodrinates;
Response
┌─s2Coodrinates────────────────────────┐
│ (37.79506681471008,55.7129059052841) │
└──────────────────────────────────────┘

s2GetNeighbors

Retorna os índices S2 vizinhos correspondentes ao S2 fornecido. Cada célula no sistema S2 é um quadrilátero delimitado por quatro geodésicas. Portanto, cada célula tem 4 vizinhos. Sintaxe
s2GetNeighbors(s2index)
Argumentos
  • s2index — S2 Index. UInt64.
Valor retornado
  • Um array composto por 4 índices vizinhos: array[s2index1, s2index3, s2index2, s2index4]. Array(UInt64).
Exemplo
Query
SELECT s2GetNeighbors(5074766849661468672) AS s2Neighbors;
Response
┌─s2Neighbors───────────────────────────────────────────────────────────────────────┐
│ [5074766987100422144,5074766712222515200,5074767536856236032,5074767261978329088] │
└───────────────────────────────────────────────────────────────────────────────────┘

s2CellsIntersect

Determina se as duas células S2 fornecidas se intersectam ou não. Sintaxe
s2CellsIntersect(s2index1, s2index2)
Argumentos
  • siIndex1, s2index2 — S2 Index. UInt64.
Valor retornado
  • 1 — Se as células se intersectam. UInt8.
  • 0 — Se as células não se intersectam. UInt8.
Exemplo
Query
SELECT s2CellsIntersect(9926595209846587392, 9926594385212866560) AS intersect;
Response
┌─intersect─┐
│         1 │
└───────────┘

s2CapContains

Determina se uma calota esférica contém um ponto S2. Uma calota esférica representa uma parte da esfera delimitada por um plano. Ela é definida por um ponto na esfera e um raio em graus. Sintaxe
s2CapContains(center, degrees, point)
Argumentos
  • center — índice de ponto S2 correspondente à calota esférica. UInt64.
  • degrees — raio da calota esférica em graus. Float64.
  • point — índice de ponto S2. UInt64.
Valor retornado
  • 1 — se a calota esférica contém o índice de ponto S2. UInt8.
  • 0 — se a calota esférica não contém o índice de ponto S2. UInt8.
Exemplo
Query
SELECT s2CapContains(1157339245694594829, 1.0, 1157347770437378819) AS capContains;
Response
┌─capContains─┐
│           1 │
└─────────────┘

s2CapUnion

Determina a menor calota que contém as duas calotas de entrada fornecidas. Uma calota representa uma porção da esfera delimitada por um plano. Ela é definida por um ponto na esfera e um raio em graus. Sintaxe
s2CapUnion(center1, radius1, center2, radius2)
Argumentos
  • center1, center2 — índices de ponto S2 correspondentes às duas calotas esféricas de entrada. UInt64.
  • radius1, radius2 — raio das duas calotas esféricas de entrada, em graus. Float64.
Valores retornados
  • center — índice de ponto S2 correspondente ao centro da menor calota esférica que contém as duas calotas esféricas de entrada. UInt64.
  • radius — raio da menor calota esférica que contém as duas calotas esféricas de entrada. Float64.
Exemplo
Query
SELECT s2CapUnion(3814912406305146967, 1.0, 1157347770437378819, 1.0) AS capUnion;
Response
┌─capUnion───────────────────────────────┐
│ (4534655147792050737,60.2088283994957) │
└────────────────────────────────────────┘

s2RectAdd

Aumenta o tamanho do retângulo delimitador para incluir o ponto S2 especificado. No sistema S2, um retângulo é representado por um tipo de S2Region chamado S2LatLngRect, que representa um retângulo no espaço de latitude e longitude. Sintaxe
s2RectAdd(s2pointLow, s2pointHigh, s2Point)
Argumentos
  • s2PointLow — índice inferior do índice de ponto S2 correspondente ao retângulo. UInt64.
  • s2PointHigh — índice superior do índice de ponto S2 correspondente ao retângulo. UInt64.
  • s2Point — índice de ponto S2 de destino que o retângulo delimitador deve ser expandido para incluir. UInt64.
Valores retornados
  • s2PointLow — identificador inferior da célula S2 correspondente ao retângulo expandido. UInt64.
  • s2PointHigh — identificador superior da célula S2 correspondente ao retângulo expandido. UInt64.
Exemplo
Query
SELECT s2RectAdd(5178914411069187297, 5177056748191934217, 5179056748191934217) AS rectAdd;
Response
┌─rectAdd───────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘

s2RectContains

Determina se um determinado retângulo contém um ponto S2. No sistema S2, um retângulo é representado por um tipo de S2Region chamado S2LatLngRect, que representa um retângulo em um espaço de latitude e longitude. Sintaxe
s2RectContains(s2PointLow, s2PointHi, s2Point)
Argumentos
  • s2PointLow — Índice S2 do índice de ponto inferior correspondente ao retângulo. UInt64.
  • s2PointHigh — Índice S2 do índice de ponto superior correspondente ao retângulo. UInt64.
  • s2Point — Índice S2 do índice de ponto de destino. UInt64.
Valor retornado
  • 1 — Se o retângulo contiver o índice de ponto S2 especificado.
  • 0 — Se o retângulo não contiver o índice de ponto S2 especificado.
Exemplo
Query
SELECT s2RectContains(5179062030687166815, 5177056748191934217, 5177914411069187297) AS rectContains;
Response
┌─rectContains─┐
│            0 │
└──────────────┘

s2RectUnion

Retorna o menor retângulo que contém a união deste retângulo com o retângulo especificado. No sistema S2, um retângulo é representado por um tipo de S2Region chamado S2LatLngRect, que representa um retângulo no espaço de latitude e longitude. Sintaxe
s2RectUnion(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
Argumentos
  • s2Rect1PointLow, s2Rect1PointHi — Índices de ponto S2 inferior e superior correspondentes ao primeiro retângulo. UInt64.
  • s2Rect2PointLow, s2Rect2PointHi — Índices de ponto S2 inferior e superior correspondentes ao segundo retângulo. UInt64.
Valores retornados
  • s2UnionRect2PointLow — ID de célula S2 inferior correspondente ao retângulo resultante da união. UInt64.
  • s2UnionRect2PointHi — ID de célula S2 superior correspondente ao retângulo resultante da união. UInt64.
Exemplo
Query
SELECT s2RectUnion(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectUnion;
Response
┌─rectUnion─────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘

s2RectIntersection

Retorna o menor retângulo que contém a interseção entre este retângulo e o retângulo fornecido. No sistema S2, um retângulo é representado por um tipo de S2Region chamado S2LatLngRect, que representa um retângulo no espaço de latitude e longitude. Sintaxe
s2RectIntersection(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
Argumentos
  • s2Rect1PointLow, s2Rect1PointHi — índices de ponto S2 inferior e superior correspondentes ao primeiro retângulo. UInt64.
  • s2Rect2PointLow, s2Rect2PointHi — índices de ponto S2 inferior e superior correspondentes ao segundo retângulo. UInt64.
Valores retornados
  • s2UnionRect2PointLow — ID de célula S2 inferior correspondente ao retângulo que contém a interseção dos retângulos informados. UInt64.
  • s2UnionRect2PointHi — ID de célula S2 superior correspondente ao retângulo que contém a interseção dos retângulos informados. UInt64.
Exemplo
Query
SELECT s2RectIntersection(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectIntersection;
Response
┌─rectIntersection──────────────────────────┐
│ (5178914411069187297,5177056748191934217) │
└───────────────────────────────────────────┘
Última modificação em 10 de junho de 2026