Функции для работы с географическими координатами
greatCircleDistance
Вычисляет расстояние между двумя точками на поверхности Земли, используя формулу большого круга.
Входные параметры
lon1Deg
— Долгота первой точки в градусах. Диапазон:[-180°, 180°]
.lat1Deg
— Широта первой точки в градусах. Диапазон:[-90°, 90°]
.lon2Deg
— Долгота второй точки в градусах. Диапазон:[-180°, 180°]
.lat2Deg
— Широта второй точки в градусах. Диапазон:[-90°, 90°]
.
Положительные значения соответствуют северной широте и восточной долготе, отрицательные значения соответствуют южной широте и западной долготе.
Возвращаемое значение
Расстояние между двумя точками на поверхности Земли в метрах.
Вызывает исключение, когда значения входных параметров выходят за пределы диапазона.
Пример
geoDistance
Аналогично greatCircleDistance
, но вычисляет расстояние по эллипсоиду WGS-84 вместо сферы. Это более точная оценка геоида Земли.
Производительность такая же, как и у greatCircleDistance
(нет снижения производительности). Рекомендуется использовать geoDistance
для вычисления расстояний на Земле.
Техническая заметка: для достаточно близких точек мы вычисляем расстояние с использованием планарного приближения с метрикой на касательной плоскости в средней точке координат.
Входные параметры
lon1Deg
— Долгота первой точки в градусах. Диапазон:[-180°, 180°]
.lat1Deg
— Широта первой точки в градусах. Диапазон:[-90°, 90°]
.lon2Deg
— Долгота второй точки в градусах. Диапазон:[-180°, 180°]
.lat2Deg
— Широта второй точки в градусах. Диапазон:[-90°, 90°]
.
Положительные значения соответствуют северной широте и восточной долготе, отрицательные значения соответствуют южной широте и западной долготе.
Возвращаемое значение
Расстояние между двумя точками на поверхности Земли в метрах.
Вызывает исключение, когда значения входных параметров выходят за пределы диапазона.
Пример
greatCircleAngle
Вычисляет центральный угол между двумя точками на поверхности Земли, используя формулу большого круга.
Входные параметры
lon1Deg
— Долгота первой точки в градусах.lat1Deg
— Широта первой точки в градусах.lon2Deg
— Долгота второй точки в градусах.lat2Deg
— Широта второй точки в градусах.
Возвращаемое значение
Центральный угол между двумя точками в градусах.
Пример
pointInEllipses
Проверяет, принадлежит ли точка хотя бы одной из эллипс.
Координаты являются геометрическими в декартовой системе координат.
Входные параметры
x, y
— Координаты точки на плоскости.xᵢ, yᵢ
— Координаты центраi
-го эллипса.aᵢ, bᵢ
— Осиi
-го эллипса в единицах координат x, y.
Входные параметры должны быть 2+4⋅n
, где n
— количество эллипсов.
Возвращаемые значения
1
, если точка находится внутри хотя бы одного из эллипсов; 0
, если это не так.
Пример
pointInPolygon
Проверяет, принадлежит ли точка многоугольнику на плоскости.
Входные значения
(x, y)
— Координаты точки на плоскости. Тип данных — Tuple — Кортеж из двух чисел.[(a, b), (c, d) ...]
— Вершины многоугольника. Тип данных — Array. Каждая вершина представлена парой координат(a, b)
. Вершины должны быть указаны в порядке по часовой стрелке или против часовой стрелки. Минимальное количество вершин — 3. Многоугольник должен быть постоянным.- Функция поддерживает многоугольники с отверстиями (вырезанные секции). Тип данных — Polygon. Либо передайте весь
Polygon
в качестве второго аргумента, либо сначала передайте внешнее кольцо, а затем каждое отверстие в качестве отдельных дополнительных аргументов. - Функция также поддерживает мультиполигоны. Тип данных — MultiPolygon. Либо передайте весь
MultiPolygon
в качестве второго аргумента, либо перечислите каждый компонентный многоугольник в качестве отдельного аргумента.
Возвращаемые значения
1
, если точка находится внутри многоугольника, 0
, если это не так.
Если точка находится на границе многоугольника, функция может вернуть либо 0, либо 1.
Пример
Примечание
• Вы можете установитьvalidate_polygons = 0
, чтобы обойти проверку геометрии.
•pointInPolygon
предполагает, что каждый многоугольник является корректным. Если ввод самопересекающийся, имеет неправильно упорядоченные кольца или пересекающиеся ребра, результаты становятся ненадежными, особенно для точек, которые находятся точно на ребре, вершине или внутри самопересечения, где понятие "внутри" и "снаружи" не определено.