Найти центральную точку нескольких широт - PullRequest
0 голосов
/ 14 апреля 2011

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

Ответы [ 2 ]

6 голосов
/ 15 апреля 2011

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

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

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

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

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

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

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

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

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

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

1 голос
/ 14 апреля 2011

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

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 км), этот метод дает близкое приближение к истинной географической средней точке.

...