Определить центроид нескольких точек
Я пишу приложение отображения, которое я пишу на 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 декартовой и эллипсоидной широты, долготы и высоты координат