Функции для работы с индексами 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.
Пример
Запрос:
Результат: