メインコンテンツへスキップ

S2Index

S2 は、すべての地理データを球面上 (地球儀のようなもの) で表現する地理空間インデックスシステムです。 S2 ライブラリでは、点は S2 Index として表現されます。これは、従来の (緯度, 経度) の組とは異なり、単位球の表面上の点を内部的に符号化した特定の数値です。 (緯度, 経度) 形式で指定された点の S2 ポイントインデックスを取得するには、geoToS2 関数を使用します。また、指定した S2 ポイントインデックスに対応する地理座標を取得するには、s2ToGeo 関数を使用できます。

geoToS2

指定された座標 (longitude, latitude) に対応する S2 の点索引を返します。 構文
geoToS2(lon, lat)
引数 戻り値
  • S2 ポイントインデックス。UInt64
Query
SELECT geoToS2(37.79506683, 55.71290588) AS s2Index;
Response
┌─────────────s2Index─┐
│ 4704772434919038107 │
└─────────────────────┘

s2ToGeo

指定された S2 のポイントインデックスに対応する Geo 座標 (longitude, latitude) を返します。 構文
s2ToGeo(s2index)
引数
  • s2index — S2 Index。UInt64
戻り値
Query
SELECT s2ToGeo(4704772434919038107) AS s2Coodrinates;
Response
┌─s2Coodrinates────────────────────────┐
│ (37.79506681471008,55.7129059052841) │
└──────────────────────────────────────┘

s2GetNeighbors

指定されたS2に対応する、隣接する S2 セルのインデックスを返します。S2 システムの各セルは、4 本の測地線で囲まれた四辺形です。そのため、各セルには 4 つの隣接セルがあります。 構文
s2GetNeighbors(s2index)
引数
  • s2index — S2 Index。UInt64
戻り値
  • 4つの隣接する索引からなる配列:array[s2index1, s2index3, s2index2, s2index4]Array(UInt64)。
Query
SELECT s2GetNeighbors(5074766849661468672) AS s2Neighbors;
Response
┌─s2Neighbors───────────────────────────────────────────────────────────────────────┐
│ [5074766987100422144,5074766712222515200,5074767536856236032,5074767261978329088] │
└───────────────────────────────────────────────────────────────────────────────────┘

s2CellsIntersect

指定された 2 つの S2 セルが交差しているかどうかを判定します。 構文
s2CellsIntersect(s2index1, s2index2)
引数
  • siIndex1, s2index2 — S2 Index。 UInt64.
戻り値
  • 1 — セルが交差する場合。 UInt8.
  • 0 — セルが交差しない場合。 UInt8.
Query
SELECT s2CellsIntersect(9926595209846587392, 9926594385212866560) AS intersect;
Response
┌─intersect─┐
│         1 │
└───────────┘

s2CapContains

球冠が S2 点を含むかどうかを判定します。球冠 は、平面で切り取られた球の一部を表します。球面上の一点と、度単位の半径で定義されます。 構文
s2CapContains(center, degrees, point)
引数
  • center — 球冠に対応する S2 ポイントインデックス。UInt64
  • degrees — 球冠の半径 (度単位) 。Float64
  • point — S2 ポイントインデックス。UInt64
戻り値
  • 1 — 球冠に S2 ポイントインデックスが含まれる場合。UInt8
  • 0 — 球冠に S2 ポイントインデックスが含まれない場合。UInt8
Query
SELECT s2CapContains(1157339245694594829, 1.0, 1157347770437378819) AS capContains;
Response
┌─capContains─┐
│           1 │
└─────────────┘

s2CapUnion

指定した2つの入力 球冠 の両方を含む最小の 球冠 を求めます。球冠 は、平面で切り取られた球面の一部を表します。これは、球面上の点と、度単位の半径によって定義されます。 構文
s2CapUnion(center1, radius1, center2, radius2)
引数
  • center1, center2 — 2 つの入力球冠に対応する S2 ポイントインデックス。UInt64
  • radius1, radius2 — 2 つの入力球冠の半径 (度単位) 。Float64
戻り値
  • center — 2 つの入力球冠を含む最小の球冠の中心に対応する S2 ポイントインデックス。UInt64
  • radius — 2 つの入力球冠を含む最小の球冠の半径。Float64
Query
SELECT s2CapUnion(3814912406305146967, 1.0, 1157347770437378819, 1.0) AS capUnion;
Response
┌─capUnion───────────────────────────────┐
│ (4534655147792050737,60.2088283994957) │
└────────────────────────────────────────┘

s2RectAdd

指定された S2 点を含むように、境界長方形のサイズを拡大します。S2 システムでは、長方形は S2LatLngRect と呼ばれる S2Region の一種で表され、緯度・経度空間内の長方形を表します。 構文
s2RectAdd(s2pointLow, s2pointHigh, s2Point)
引数
  • s2PointLow — 長方形に対応する下限の S2 ポイントインデックス。UInt64
  • s2PointHigh — 長方形に対応する上限の S2 ポイントインデックス。UInt64
  • s2Point — 境界長方形に含まれるように拡張する対象の S2 ポイントインデックス。UInt64
戻り値
  • s2PointLow — 拡張後の長方形に対応する下限の S2 セル ID。UInt64
  • s2PointHigh — 拡張後の長方形に対応する上限の S2 セル ID。UInt64
Query
SELECT s2RectAdd(5178914411069187297, 5177056748191934217, 5179056748191934217) AS rectAdd;
Response
┌─rectAdd───────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘

s2RectContains

指定された長方形が S2 点を含むかどうかを判定します。S2 システムでは、長方形は緯度・経度空間内の長方形を表す S2LatLngRect と呼ばれる S2Region の一種として表現されます。 構文
s2RectContains(s2PointLow, s2PointHi, s2Point)
引数
  • s2PointLow — 長方形に対応する S2 ポイントインデックスの下限。UInt64
  • s2PointHigh — 長方形に対応する S2 ポイントインデックスの上限。UInt64
  • s2Point — 対象の S2 ポイントインデックス。UInt64
戻り値
  • 1 — 長方形が指定された S2 ポイントを含む場合。
  • 0 — 長方形が指定された S2 ポイントを含まない場合。
Query
SELECT s2RectContains(5179062030687166815, 5177056748191934217, 5177914411069187297) AS rectContains;
Response
┌─rectContains─┐
│            0 │
└──────────────┘

s2RectUnion

この長方形と指定された長方形の和集合を含む最小の長方形を返します。S2 システムでは、長方形は緯度・経度空間内の長方形を表す S2LatLngRect という S2Region の一種として表現されます。 構文
s2RectUnion(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
引数
  • s2Rect1PointLow, s2Rect1PointHi — 1 つ目の長方形に対応する S2 ポイントインデックスの下限値および上限値。UInt64
  • s2Rect2PointLow, s2Rect2PointHi — 2 つ目の長方形に対応する S2 ポイントインデックスの下限値および上限値。UInt64
戻り値
  • s2UnionRect2PointLow — 和集合の長方形に対応する S2 セル ID の下限値。UInt64
  • s2UnionRect2PointHi — 和集合の長方形に対応する S2 セル ID の上限値。UInt64
Query
SELECT s2RectUnion(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectUnion;
Response
┌─rectUnion─────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘

s2RectIntersection

この長方形と指定された長方形の共通部分を含む、最小の長方形を返します。S2 システムでは、長方形は S2LatLngRect と呼ばれる S2Region の一種で表され、緯度・経度空間における長方形を表します。 構文
s2RectIntersection(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
引数
  • s2Rect1PointLow, s2Rect1PointHi — 1 つ目の長方形に対応する S2 ポイントインデックスの下限値および上限値。UInt64
  • s2Rect2PointLow, s2Rect2PointHi — 2 つ目の長方形に対応する S2 ポイントインデックスの下限値および上限値。UInt64
戻り値
  • s2UnionRect2PointLow — 指定した長方形どうしの共通部分を含む長方形に対応する S2 セル ID の下限値。UInt64
  • s2UnionRect2PointHi — 指定した長方形どうしの共通部分を含む長方形に対応する S2 セル ID の上限値。UInt64
Query
SELECT s2RectIntersection(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectIntersection;
Response
┌─rectIntersection──────────────────────────┐
│ (5178914411069187297,5177056748191934217) │
└───────────────────────────────────────────┘
最終更新日 2026年6月10日