Определить центроид нескольких точек

Я пишу приложение отображения, которое я пишу на python, и мне нужно получить центроид lat/lon из N точек. Скажем, у меня есть два местоположения

a.lat = 101
a.lon = 230

b.lat = 146
b.lon = 200

получить центр двух точек довольно легко, используя евклидову формулу. Я хотел бы чтобы иметь возможность сделать это более чем за два очка.

принципиально я хочу сделать что-то вроде http://a.placebetween.us/ где можно ввести несколько адресов и найти место, которое равноудалено для всех.

6 ответов


посмотрите на документ pdf, связанный ниже. Он объясняет, как применять алгоритм плоской фигуры, который выставляет счет ящерице упоминает, но на поверхности сферы.

миниатюра плаката и некоторые детали http://img51.imageshack.us/img51/4093/centroidspostersummary.jpg
Источник: http://www.jennessent.com/arcgis/shapes_poster.htm
Существует также 25 МБ полноразмерный PDF доступен для скачать.
Заслуга mixdev для поиска ссылки на исходный источник и, конечно же, на Jenness Enterprises для предоставления информации. Примечание: Я никоим образом не связан с автором этого материала.


добавление к ответу Эндрю Роллингса.

Вам также нужно будет убедиться, что если у вас есть точки по обе стороны линии долготы 0/360, которые вы измеряете в "правильном направлении"

Is the center of (0,359) and (0, 1) at (0,0) or (0,180)?

Если вы усредняете углы и имеете дело с ними, пересекая 0/360, то безопаснее суммировать грех и cos каждого значения, а затем среднее = atan2 (сумма синусов,сумма косинусов)
(будьте осторожны с порядком аргументов в вашей функции atan2)


математика довольно проста, если точки образуют самолет рисунок. Однако нет никакой гарантии, что набор широт и долгот так прост, поэтому сначала может потребоваться найти выпуклой оболочки точек.

EDIT: As eJames указывает, что вы должны внести исправления для поверхности сферы. Моя вина в том, что я предположил (не подумав), что это было понято. +1 к нему.


ниже PDF имеет немного больше деталей, чем плакат от Jenness Enterprises. Он также выполняет преобразование в обоих направлениях и для сфероида (например, Земли), а не идеальный шар.

преобразование между 3-D декартовой и эллипсоидной широты, долготы и высоты координат


отдельно усредняйте широты и долготы.