Перейти к основному содержимому
Перейти к основному содержимому

Функции для работы с индексом S2

S2Index

S2 — это географическая система индексации, в которой все географические данные представлены на трехмерной сфере (аналогично глобусу).

В библиотеке S2 точки представлены как индекс S2 — специфическое число, которое внутренне кодирует точку на поверхности единичной сферы, в отличие от традиционных пар (широта, долгота). Чтобы получить индекс точки S2 для заданной точки, указанной в формате (широта, долгота), используйте функцию geoToS2. Также вы можете использовать функцию s2ToGeo для получения географических координат, соответствующих указанному индексу точки S2.

geoToS2

Возвращает индекс точки S2, соответствующий предоставленным координатам (долгота, широта).

Синтаксис

Аргументы

Возвращаемые значения

  • Индекс точки S2. UInt64.

Пример

Запрос:

Результат:

s2ToGeo

Возвращает географические координаты (долгота, широта), соответствующие предоставленному индексу S2.

Синтаксис

Аргументы

  • s2index — Индекс S2. UInt64.

Возвращаемые значения

  • Кортеж tuple, состоящий из двух значений:

Пример

Запрос:

Результат:

s2GetNeighbors

Возвращает соседние индексы S2, соответствующие предоставленному S2. Каждая ячейка в системе S2 является четырехугольником, ограниченным четырьмя геодезическими линиями. Таким образом, каждая ячейка имеет 4 соседа.

Синтаксис

Аргументы

  • s2index — Индекс S2. UInt64.

Возвращаемое значение

  • Массив, состоящий из 4 соседних индексов: array[s2index1, s2index3, s2index2, s2index4]. Array(UInt64).

Пример

Запрос:

Результат:

s2CellsIntersect

Определяет, пересекаются ли две предоставленные ячейки S2 или нет.

Синтаксис

Аргументы

  • s2index1, s2index2 — Индекс S2. UInt64.

Возвращаемое значение

  • 1 — Если ячейки пересекаются. UInt8.
  • 0 — Если ячейки не пересекаются. UInt8.

Пример

Запрос:

Результат:

s2CapContains

Определяет, содержит ли кепка точку S2. Кепка представляет собой часть сферы, которая была отрезана плоскостью. Она определяется точкой на сфере и радиусом в градусах.

Синтаксис

Аргументы

  • center — Индекс S2, соответствующий кепке. UInt64.
  • degrees — Радиус кепки в градусах. Float64.
  • point — Индекс S2. UInt64.

Возвращаемое значение

  • 1 — Если кепка содержит индекс точки S2. UInt8.
  • 0 — Если кепка не содержит индекс точки S2. UInt8.

Пример

Запрос:

Результат:

s2CapUnion

Определяет наименьшую кепку, которая содержит две заданные входные кепки. Кепка представляет собой часть сферы, которая была отрезана плоскостью. Она определяется точкой на сфере и радиусом в градусах.

Синтаксис

Аргументы

  • center1, center2 — Индексы S2, соответствующие двум входным кепкам. UInt64.
  • radius1, radius2 — Радиусы двух входных кепок в градусах. Float64.

Возвращаемые значения

  • center — Индекс точки S2, соответствующий центру наименьшей кепки, содержащей две входные кепки. UInt64.
  • radius — Радиус наименьшей кепки, содержащей две входные кепки. Float64.

Пример

Запрос:

Результат:

s2RectAdd

Увеличивает размер ограничивающего прямоугольника, чтобы включить заданную точку S2. В системе S2 прямоугольник представлен типом S2Region, называемым S2LatLngRect, который представляет прямоугольник в пространстве широты и долготы.

Синтаксис

Аргументы

  • s2PointLow — Низкий индекс точки S2, соответствующий прямоугольнику. UInt64.
  • s2PointHigh — Высокий индекс точки S2, соответствующий прямоугольнику. UInt64.
  • s2Point — Целевой индекс точки S2, который должен быть включен в ограничивающий прямоугольник. UInt64.

Возвращаемые значения

  • s2PointLow — Низкий индекс ячейки S2, соответствующий увеличенному прямоугольнику. UInt64.
  • s2PointHigh — Высокий индекс ячейки S2, соответствующий увеличенному прямоугольнику. UInt64.

Пример

Запрос:

Результат:

s2RectContains

Определяет, содержит ли данный прямоугольник точку S2. В системе S2 прямоугольник представлен типом S2Region, называемым S2LatLngRect, который представляет прямоугольник в пространстве широты и долготы.

Синтаксис

Аргументы

  • s2PointLow — Низкий индекс точки S2, соответствующий прямоугольнику. UInt64.
  • s2PointHigh — Высокий индекс точки S2, соответствующий прямоугольнику. UInt64.
  • s2Point — Целевой индекс точки S2. UInt64.

Возвращаемое значение

  • 1 — Если прямоугольник содержит данную точку S2.
  • 0 — Если прямоугольник не содержит данную точку S2.

Пример

Запрос:

Результат:

s2RectUnion

Возвращает наименьший прямоугольник, содержащий объединение этого прямоугольника и заданного прямоугольника. В системе S2 прямоугольник представлен типом S2Region, называемым S2LatLngRect, который представляет прямоугольник в пространстве широты и долготы.

Синтаксис

Аргументы

  • s2Rect1PointLow, s2Rect1PointHi — Низкие и высокие индексы точек S2, соответствующие первому прямоугольнику. UInt64.
  • s2Rect2PointLow, s2Rect2PointHi — Низкие и высокие индексы точек S2, соответствующие второму прямоугольнику. UInt64.

Возвращаемые значения

  • s2UnionRect2PointLow — Низкий индекс ячейки S2, соответствующий объединенному прямоугольнику. UInt64.
  • s2UnionRect2PointHi — Высокий индекс ячейки S2, соответствующий объединенному прямоугольнику. UInt64.

Пример

Запрос:

Результат:

s2RectIntersection

Возвращает наименьший прямоугольник, содержащий пересечение этого прямоугольника и заданного прямоугольника. В системе S2 прямоугольник представлен типом S2Region, называемым S2LatLngRect, который представляет прямоугольник в пространстве широты и долготы.

Синтаксис

Аргументы

  • s2Rect1PointLow, s2Rect1PointHi — Низкие и высокие индексы точек S2, соответствующие первому прямоугольнику. UInt64.
  • s2Rect2PointLow, s2Rect2PointHi — Низкие и высокие индексы точек S2, соответствующие второму прямоугольнику. UInt64.

Возвращаемые значения

  • s2UnionRect2PointLow — Низкий индекс ячейки S2, соответствующий прямоугольнику, содержащему пересечение заданных прямоугольников. UInt64.
  • s2UnionRect2PointHi — Высокий индекс ячейки S2, соответствующий прямоугольнику, содержащему пересечение заданных прямоугольников. UInt64.

Пример

Запрос:

Результат: