Найдите центральную точку нескольких lat lng

У меня есть несколько lat lng, и я хочу, чтобы центральная точка всей этой lat lng... например, место встречи, которая будет ближе всего ко всей этой lat lng.


person satishdas    schedule 14.04.2011    source источник
comment
возможный дубликат Определить центр тяжести нескольких точек   -  person Caleb    schedule 15.04.2011


Ответы (2)


Вам нужно рассчитать среднее положение этих координат:

float lat=0, lng=0;
for(int i=0; i<num_coords; ++i) {
   lat += lats[i];
   lng += lngs[i];
}

lat /= num_coords;
lng /= num_coords;

Когда расстояние между точками составляет менее 500 миль (800 км), этот метод дает близкое приближение к истинной географической средней точке.

person Max    schedule 14.04.2011
comment
Это не правильно. Долготы -179 градусов и +179 градусов очень близки. Ваш ответ даст 0, то есть полмира! - person Lior Kogan; 15.04.2011
comment
Этот ответ дает среднее значение, которое неверно для вопроса. - person Black Frog; 15.04.2011
comment
Я отредактировал ваш ответ. Когда редактирование будет принято, я заберу свой отрицательный голос. - person Black Frog; 15.04.2011
comment
неправильный ответ. Как сказал @BlackFrog, это дает среднее значение! Взгляните на Centroids в Википедии. - person Mário Carvalho; 04.12.2012

На самом деле это два разных момента. Посмотрите здесь.

  • Центр тяжести

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

Географическая средняя точка рассчитывается путем нахождения центра тяжести местоположений. Широта и долгота местоположений преобразуются в декартовы координаты (x,y,z). Рассчитывается средняя координата x, y и z. Эта средняя координата находится внутри Земли и является истинным центром масс, и можно провести линию от центра Земли, проходящую через эту точку, а затем к поверхности Земли, которая является географической средней точкой. Средние координаты x, y и z преобразуются в широту и долготу средней точки.

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

  • Центр минимального расстояния

Эта точка минимизирует комбинированное расстояние перемещения из набора точек. Центр минимального расстояния — это точка абсолютного минимального расстояния перемещения, однако она не пытается уравнять величину пройденного расстояния от других точек.

Калькуляторы есть здесь

Методы описаны здесь

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

person Lior Kogan    schedule 15.04.2011
comment
Согласитесь, что метод простого усреднения не самый лучший для случаев, когда вам нужно вычислить координаты, которые могут сильно различаться, однако для простого приложения для iPhone это не будет иметь большого значения, так как расстояние слишком мало (а что касается -179 а 179 - это Тихий океан там почти везде). - person Max; 15.04.2011