Функции для работы с индексами S2
S2 — это система геокодирования, в которой все географические данные представлены на трехмерной сфере (аналогично глобусу).
В библиотеке S2 точки представлены в виде индекса S2 — определенного числа, которое внутренне кодирует точку на поверхности трехмерной единичной сферы, в отличие от традиционных пар (широта, долгота). Чтобы получить индекс S2 для точки, заданной в формате (широта, долгота), используйте функцию geoToS2. Также вы можете использовать функцию s2togeo для получения географических координат, соответствующих заданному S2 индексу точки.
geoToS2
Возвращает S2 индекс точки, соответствующий заданным координатам в формате (долгота, широта).
Синтаксис
Аргументы
Возвращаемое значение
- S2 индекс точки.
Тип: UInt64.
Пример
Запрос:
Результат:
s2ToGeo
Возвращает географические координаты (долгота, широта), соответствующие заданному S2 индексу точки.
Синтаксис
Аргументы
Возвращаемые значения
- Кортеж их двух значений:
tuple(lon,lat).
Тип: lon — Float64. lat — Float64.
Пример
Запрос:
Результат:
s2GetNeighbors
Возвращает S2 индексы ячеек, которые являются соседними для заданного S2 индекса. Ячейка в системе S2 представляет собой прямоугольник, ограниченный четырьмя сторонами. Соответственно, у каждой ячейки есть 4 соседние ячейки.
Синтаксис
Аргументы
Возвращаемые значения
- Массив, содержащий 4 значения — S2 индекса соседних ячеек:
array[s2index1, s2index3, s2index2, s2index4].
Тип: UInt64.
Пример
Запрос:
Результат:
s2CellsIntersect
Проверяет, пересекаются ли две заданные ячейки или нет.
Синтаксис
Аргументы
siIndex1,s2index2— S2 индексы первой и второй ячейки. UInt64.
Возвращаемые значения
- 1 — ячейки пересекаются.
- 0 — ячейки не пересекаются.
Тип: UInt8.
Пример
Запрос:
Результат:
s2CapContains
Определяет, содержит ли заданный купол указанную точку. Купол представляет собой часть сферы, которая была отрезана плоскостью. Купол задается точкой на сфере и радиусом в градусах.
Синтаксис
Аргументы
center— S2 индекс точки, определяющей центр купола. UInt64.degrees— радиус купола в градусах. Float64.point— S2 индекс проверяемой точки. UInt64.
Возвращаемые значения
- 1 — купол содержит точку.
- 0 — купол не содержит точку.
Тип: 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 — прямоугольник содержит заданную точку.
- 0 — прямоугольник не содержит заданную точку.
Пример
Запрос:
Результат:
s2RectUinion
Возвращает наименьший прямоугольник, содержащий объединение двух заданных прямоугольников. В системе S2 прямоугольник представлен типом S2Region, называемым S2LatLngRect, который задает прямоугольник в пространстве широта-долгота.
Синтаксис
Аргументы
s2Rect1PointLow,s2Rect1PointHi— значения S2 индекса для самой низкой и самой высокой точек, которые задают первый прямоугольник. UInt64.s2Rect2PointLow,s2Rect2PointHi— значения S2 индекса для самой низкой и самой высокой точек, которые задают второй прямоугольник. UInt64.
Возвращаемые значения
s2UnionRect2PointLow— идентификатор нижней ячейки, соответствующей объединенному прямоугольнику. Тип: UInt64.s2UnionRect2PointHi— идентификатор верхней ячейки, соответствующей объединенному прямоугольнику. Тип: UInt64.
Пример
Запрос:
Результат:
s2RectIntersection
Возвращает наименьший прямоугольник, содержащий пересечение двух заданных прямоугольников. В системе S2 прямоугольник представлен типом S2Region, называемым S2LatLngRect, который задает прямоугольник в пространстве широта-долгота.
Синтаксис
Аргументы
s2Rect1PointLow,s2Rect1PointHi— значения S2 индекса для самой низкой и самой высокой точек, которые задают первый прямоугольник. UInt64.s2Rect2PointLow,s2Rect2PointHi— значения S2 индекса для самой низкой и самой высокой точек, которые задают второй прямоугольник. UInt64.
Возвращаемые значения
s2UnionRect2PointLow— идентификатор нижней ячейки, соответствующей результирующему прямоугольнику. Тип: UInt64.s2UnionRect2PointHi— идентификатор верхней ячейки, соответствующей результирующему прямоугольнику. Тип: UInt64.
Пример
Запрос:
Результат: