Вопрос

Мне нужен запрос (или функция) MySQL для расчета географической средней точки произвольного количества координат широты и долготы.Я хочу использовать метод C (средняя широта/долгота), как описано на этой странице. http://www.geomidpoint.com/calculation.html но не могу понять, как преобразовать это в запрос SQL.Я ищу что-то вроде:

выберите LATITUDE_AVG_FORMULA(points.latitude),LONGITUDE_AVG_FORMULA(points.longitude) из точек;

Где каждая точка в таблице точек имеет соответствующую широту и долготу в десятичном формате.Я надеюсь, что у кого-то либо уже есть запрос (или функция) MySQL, который он использует для этого, либо у него гораздо больше опыта в геопространственных расчетах, чем у меня.Заранее спасибо за вашу помощь!

Это было полезно?

Решение

Метод C, по сути, представляет собой средневзвешенное значение.Ваш вопрос близок к синтаксису MySQL.Учитывая, что это десятичный формат.

Если у вас есть весы:

SELECT
    SUM( longitude * weight ) / SUM( weight ) AS Avg_Long,
    SUM( latitude * weight ) / SUM( weight ) AS Avg_Lat
FROM
    points

Или невзвешенный:

SELECT
    AVG( longitude ) AS Avg_Long,
    AVG( latitude ) AS Avg_Lat
FROM
    points

Ваша ссылка намекает на корректировку базовой линии, но я не уверен, что это необходимо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top