Calcular el punto central de varios pares de coordenadas de latitud/longitud

Dado un conjunto de puntos de latitud y longitud, ¿cómo puedo calcular la latitud y longitud del punto central de ese conjunto (es decir, un punto que centraría una vista en todos los puntos)?

EDIT: Python solución que he utilizado:

Convert lat/lon (must be in radians) to Cartesian coordinates for each location.
X = cos(lat) * cos(lon)
Y = cos(lat) * sin(lon)
Z = sin(lat)

Compute average x, y and z coordinates.
x = (x1 + x2 + ... + xn) / n
y = (y1 + y2 + ... + yn) / n
z = (z1 + z2 + ... + zn) / n

Convert average x, y, z coordinate to latitude and longitude.
Lon = atan2(y, x)
Hyp = sqrt(x * x + y * y)
Lat = atan2(z, hyp)
Solución

El simple enfoque de promediarlos tiene casos extraños con ángulos cuando se envuelven de 359' de vuelta a 0'.

En una pregunta muy anterior en SO se preguntaba por la media de un conjunto de ángulos de compás.

Una expansión del enfoque recomendado allí para coordenadas esféricas sería:

  • Convertir cada par latitud/longitud en un vector 3D de longitud unitaria.
  • Sumar cada uno de esos vectores
  • Normalizar el vector resultante
  • Convertir de nuevo a coordenadas esféricas
Comentarios (2)

Es lo mismo que un problema de media ponderada en el que todas las ponderaciones son iguales y hay dos dimensiones.

Encuentre el promedio de todas las latitudes para su latitud central y el promedio de todas las longitudes para la longitud central.

Advertencia: Esta es una aproximación de distancias cortas y el error se volverá ingobernable cuando las desviaciones de la media sean de más de unas pocas millas debido a la curvatura de la Tierra. Recuerde que las latitudes y longitudes son grados (en realidad no es una cuadrícula).

Comentarios (1)

Si quiere que todos los puntos sean visibles en la imagen, querrá los extremos en latitud y longitud y asegurarse de que la vista incluye esos valores con el borde que desee.

(De Alnitak's respuesta, la forma de calcular los extremos puede ser un poco problemático, pero si they're unos pocos grados a cada lado de la longitud que envuelve, entonces you'll llamar a la toma y tomar el rango correcto).

Si no quiere distorsionar el mapa en el que se encuentran estos puntos, ajuste la relación de aspecto del cuadro delimitador para que se ajuste a los píxeles que haya asignado a la vista, pero incluya los extremos.

Para mantener los puntos centrados en algún nivel de zoom arbitraria, calcular el centro del cuadro delimitador que "sólo se ajusta" los puntos como anteriormente, y mantener ese punto como el punto central.

Comentarios (0)