Вопрос

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

a.lat = 101
a.lon = 230

b.lat = 146
b.lon = 200

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

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

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

Решение

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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