Определить центр тяжести нескольких точек - PullRequest
6 голосов
/ 09 декабря 2008

Я пишу картографическое приложение, которое пишу на python, и мне нужно получить широту / долготу N точек. Скажем, у меня есть два местоположения

a.lat = 101
a.lon = 230

b.lat = 146
b.lon = 200

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

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

Ответы [ 6 ]

7 голосов
/ 09 декабря 2008

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

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

3 голосов
/ 09 декабря 2008

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

3 голосов
/ 09 декабря 2008

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

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

Is the center of (0,359) and (0, 1) at (0,0) or (0,180)?
1 голос
/ 09 декабря 2008

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

РЕДАКТИРОВАТЬ: Как указывает eJames , вы должны внести исправления для поверхности сферы. Я виноват в предположении (не думая), что это поняли. +1 к нему.

0 голосов
/ 12 ноября 2011

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

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

0 голосов
/ 09 декабря 2008

Отдельно средние широты и долготы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...