earthdistance. Вычислен ие расстояния между точками на поверхности Земли
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты:
cube
.Схема размещения:
ext
.
Модуль реализует два разных варианта вычисления ортодромии:
- первый вариант зависит от модуля
cube
; - второй вариант основан на встроенном типе данных
point
, в котором в качестве координат задаются широта и долгота.
Примечание:
Ортодромия – расстояние между точками на поверхности Земли, кратчайшее расстояние между двумя точками на поверхности земного шара, наименьший из отрезков дуги большого круга, проходящей через эти точки.
В этом модуле планета Земля считается идеальной сферой.
В модуле реализованы функции земных расстояний по кубам:
- для ввода данных, выражающих широту и долготу в градусах;
- для вывода ширины и долготы, для вычисления ортодромии между двумя точками и простого указания окружающего прямоугольника, что полезно для поиска по индексу.
Предоставляемые фун кции:
Функция | Результат | Описание |
---|---|---|
earth () | float8 | Возвращает предполагаемый радиус Земли в метрах |
sec_to_gc (float8) | float8 | Переводит расстояние по обычной прямой (по секущей) между двумя точками на поверхности Земли в расстояние между ними по сфере |
gc_to_sec (float8) | float8 | Переводит расстояние по сфере между двумя точками на поверхности Земли в расстояние по обычной прямой (по секущей) между ними |
ll_to_earth (float8, float8) | earth | Возвращает положение точки на поверхности Земли по заданной широте (первый аргумент) и долготе (второй аргумент) в градусах |
latitude (earth) | float8 | Возвращает широту точки на поверхности Земли в градусах |
longitude (earth) | float8 | Возвращает долготу точки на поверхности Земли в градусах |
earth_distance (earth, earth) | float8 | Возвращает расстояние по сфере между двумя точками на поверхности Земли |
earth_box (earth, float8) | cube | Выдает охватывающий куб, подходящий для поиска по индексу с пр именением реализованного для типа cube оператора @> для точек в пределах заданной ортодромии от цели. Некоторые точки в этом кубе будут отстоять от цели дальше, чем на заданную ортодромию, поэтому в запрос нужно включить вторую проверку с функцией earth_distance . |
В модуле реализованы операторы земных расстояний по точкам.
Эта часть модуля основана на представлении точек на Земле в виде значений типа point
, в которых первый компонент представляет долготу в градусах, а второй — широту. Точки воспринимаются как (долгота, широта)
, а не наоборот, так как долгота ближе к интуитивному представлению как оси X
, а широта — оси Y
.
В модуле реализован один оператор:
Оператор | Результат | Описание |
---|---|---|
point <@> point | float8 | Вычисляет расстояние в сухопутных милях между точками на поверхности Земли |
Изменение функции earth()
не повлияет на результат этого оператора.