S2Index
S2 est un système d’indexation géographique dans lequel toutes les données géographiques sont représentées sur une sphère (semblable à un globe).
Dans la bibliothèque S2, les points sont représentés sous la forme d’un indice S2 — un nombre spécifique qui encode en interne un point sur la surface d’une sphère unitaire, contrairement aux paires traditionnelles (latitude, longitude). Pour obtenir l’indice de point S2 d’un point donné spécifié au format (latitude, longitude), utilisez la fonction geoToS2. Vous pouvez également utiliser la fonction s2ToGeo pour obtenir les coordonnées géographiques correspondant à l’indice de point S2 indiqué.
geoToS2
Renvoie l’index S2 du point correspondant aux coordonnées fournies (longitude, latitude).
Syntaxe
geoToS2(lon, lat)Arguments
Valeurs de retour
- indice de point S2. UInt64.
Exemple
SELECT geoToS2(37.79506683, 55.71290588) AS s2Index;┌─────────────s2Index─┐
│ 4704772434919038107 │
└─────────────────────┘s2ToGeo
Renvoie les coordonnées Geo (longitude, latitude) correspondant à l’indice du point S2 fourni.
Syntaxe
s2ToGeo(s2index)Arguments
s2index— indice S2. UInt64.
Valeurs de retour
Exemple
SELECT s2ToGeo(4704772434919038107) AS s2Coodrinates;┌─s2Coodrinates────────────────────────┐
│ (37.79506681471008,55.7129059052841) │
└──────────────────────────────────────┘s2GetNeighbors
Renvoie les index S2 voisins correspondant à l’index S2 fourni. Chaque cellule du système S2 est un quadrilatère délimité par quatre géodésiques. Ainsi, chaque cellule a 4 voisins.
Syntaxe
s2GetNeighbors(s2index)Arguments
s2index— indice S2. UInt64.
Valeur de retour
- Un tableau composé de 4 indices voisins :
array[s2index1, s2index3, s2index2, s2index4]. Array(UInt64).
Exemple
SELECT s2GetNeighbors(5074766849661468672) AS s2Neighbors;┌─s2Neighbors───────────────────────────────────────────────────────────────────────┐
│ [5074766987100422144,5074766712222515200,5074767536856236032,5074767261978329088] │
└───────────────────────────────────────────────────────────────────────────────────┘s2CellsIntersect
Détermine si les deux cellules S2 fournies s’intersectent ou non.
Syntaxe
s2CellsIntersect(s2index1, s2index2)Arguments
siIndex1,s2index2— indice S2. UInt64.
Valeur renvoyée
Exemple
SELECT s2CellsIntersect(9926595209846587392, 9926594385212866560) AS intersect;┌─intersect─┐
│ 1 │
└───────────┘s2CapContains
Détermine si une calotte sphérique contient un point S2. Une calotte sphérique représente une partie de la sphère délimitée par un plan. Elle est définie par un point sur la sphère et un rayon en degrés.
Syntaxe
s2CapContains(center, degrees, point)Arguments
center— Indice de point S2 correspondant à la calotte. UInt64.degrees— Rayon de la calotte, en degrés. Float64.point— Indice de point S2. UInt64.
Valeur renvoyée
1— Si la calotte contient l’indice de point S2. UInt8.0— Si la calotte ne contient pas l’indice de point S2. UInt8.
Exemple
SELECT s2CapContains(1157339245694594829, 1.0, 1157347770437378819) AS capContains;┌─capContains─┐
│ 1 │
└─────────────┘s2CapUnion
Détermine la plus petite calotte sphérique contenant les deux calottes sphériques d’entrée données. Une calotte sphérique représente une portion de la sphère délimitée par un plan. Elle est définie par un point sur la sphère et un rayon en degrés.
Syntaxe
s2CapUnion(center1, radius1, center2, radius2)Arguments
center1,center2— indices de point S2 correspondant aux deux calottes d’entrée. UInt64.radius1,radius2— rayon des deux calottes d’entrée, en degrés. Float64.
Valeurs renvoyées
center— indice de point S2 correspondant au centre de la plus petite calotte contenant les deux calottes d’entrée. UInt64.radius— rayon de la plus petite calotte contenant les deux calottes d’entrée. Float64.
Exemple
SELECT s2CapUnion(3814912406305146967, 1.0, 1157347770437378819, 1.0) AS capUnion;┌─capUnion───────────────────────────────┐
│ (4534655147792050737,60.2088283994957) │
└────────────────────────────────────────┘s2RectAdd
Agrandit le rectangle englobant afin d'inclure le point S2 donné. Dans le système S2, un rectangle est représenté par un type de S2Region appelé S2LatLngRect, qui correspond à un rectangle dans l'espace latitude-longitude.
Syntaxe
s2RectAdd(s2pointLow, s2pointHigh, s2Point)Arguments
s2PointLow— Index de point S2 inférieur correspondant au rectangle. UInt64.s2PointHigh— Index de point S2 supérieur correspondant au rectangle. UInt64.s2Point— Index de point S2 cible que le rectangle délimiteur doit être étendu pour inclure. UInt64.
Returned values
s2PointLow— ID de cellule S2 inférieur correspondant au rectangle étendu. UInt64.s2PointHigh— ID de cellule S2 supérieur correspondant au rectangle étendu. UInt64.
Example
SELECT s2RectAdd(5178914411069187297, 5177056748191934217, 5179056748191934217) AS rectAdd;┌─rectAdd───────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘s2RectContains
Détermine si un rectangle donné contient un point S2. Dans le système S2, un rectangle est représenté par un type de S2Region appelé S2LatLngRect, qui correspond à un rectangle dans l’espace latitude-longitude.
Syntaxe
s2RectContains(s2PointLow, s2PointHi, s2Point)Arguments
s2PointLow— Indice de point S2 inférieur correspondant au rectangle. UInt64.s2PointHigh— Indice de point S2 supérieur correspondant au rectangle. UInt64.s2Point— Indice de point S2 cible. UInt64.
Valeur renvoyée
1— Si le rectangle contient l’indice de point S2 donné.0— Si le rectangle ne contient pas l’indice de point S2 donné.
Exemple
SELECT s2RectContains(5179062030687166815, 5177056748191934217, 5177914411069187297) AS rectContains;┌─rectContains─┐
│ 0 │
└──────────────┘s2RectUnion
Renvoie le plus petit rectangle contenant l’union de ce rectangle et du rectangle spécifié. Dans le système S2, un rectangle est représenté par un type de S2Region appelé S2LatLngRect, qui correspond à un rectangle dans l’espace latitude-longitude.
Syntaxe
s2RectUnion(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)Arguments
s2Rect1PointLow,s2Rect1PointHi— indices de point S2 inférieur et supérieur correspondant au premier rectangle. UInt64.s2Rect2PointLow,s2Rect2PointHi— indices de point S2 inférieur et supérieur correspondant au deuxième rectangle. UInt64.
Valeurs renvoyées
s2UnionRect2PointLow— ID de cellule S2 inférieur correspondant au rectangle union. UInt64.s2UnionRect2PointHi— ID de cellule S2 supérieur correspondant au rectangle union. UInt64.
Exemple
SELECT s2RectUnion(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectUnion;┌─rectUnion─────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘s2RectIntersection
Renvoie le plus petit rectangle contenant l’intersection entre ce rectangle et le rectangle donné. Dans le système S2, un rectangle est représenté par un type de S2Region appelé S2LatLngRect, qui représente un rectangle dans l’espace des latitudes et longitudes.
Syntaxe
s2RectIntersection(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)Arguments
s2Rect1PointLow,s2Rect1PointHi— indices de point S2 inférieur et supérieur correspondant au premier rectangle. UInt64.s2Rect2PointLow,s2Rect2PointHi— indices de point S2 inférieur et supérieur correspondant au deuxième rectangle. UInt64.
Valeurs renvoyées
s2UnionRect2PointLow— ID de cellule S2 inférieur correspondant au rectangle contenant l’intersection des rectangles donnés. UInt64.s2UnionRect2PointHi— ID de cellule S2 supérieur correspondant au rectangle contenant l’intersection des rectangles donnés. UInt64.
Exemple
SELECT s2RectIntersection(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectIntersection;┌─rectIntersection──────────────────────────┐
│ (5178914411069187297,5177056748191934217) │
└───────────────────────────────────────────┘