2008-12-09 8 views
6

Escribo una aplicación de mapeo que estoy escribiendo en python y necesito obtener el centroide lat/lon de N puntos. Decir que tengo dos lugaresDeterminar el centroide de múltiples puntos

a.lat = 101 
a.lon = 230 

b.lat = 146 
b.lon = 200 

Conseguir el centro de dos puntos es bastante fácil usando una fórmula euclidiana. Me gustaría para poder hacerlo por más de dos puntos.

Fundamentalmente estoy buscando hacer algo como http://a.placebetween.us/ donde se pueden ingresar varias direcciones y encontrar el lugar equidistante para todos.

Respuesta

7

un vistazo a un documento PDF vinculado a continuación. Explica cómo aplicar las menciones the plane figure algorithm that Bill the Lizard, pero en la superficie de una esfera.

poster thumbnail and some details http://img51.imageshack.us/img51/4093/centroidspostersummary.jpg
Fuente: http://www.jennessent.com/arcgis/shapes_poster.htm
También hay un 25 MB full-size PDF disponible para su descarga.
El crédito va al mixdev para encontrar el enlace a la fuente original, y por supuesto a Jenness Enterprises para que la información esté disponible. Nota: de ninguna manera estoy afiliado con el autor de este material.

+1

Esto es una mejora definitiva. He estado trabajando mucho con GIS últimamente, así que simplemente asumí que esto se entendía. Esa es una suposición terrible en un foro general. +1 –

+0

Gracias. Esperemos que todo valga para masticar. –

+2

Ese PDF falta. Verifique esto en su lugar [24MB!] Http://www.jennessent.com/downloads/graphics_shapes_poster_full.pdf – mixdev

1

La matemática es bastante simple si los puntos forman un plane figure. Sin embargo, no hay garantía de que un conjunto de latitudes y longitudes sea así de simple, por lo que puede ser necesario primero encontrar el convex hull de los puntos.

EDITAR: Como eJames señala, usted tiene que hacer correcciones para la superficie de una esfera. Mi culpa por suponer (sin pensar) que esto fue entendido. +1 a él.

3

Agregar a la respuesta de Andrew Rollings.

Usted también tendrá que asegurarse de que si usted tiene puntos a cada lado de la línea de 0/360 longitud que se está midiendo en la "dirección correcta"

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

Esta es la razón principal por la que mi aplicación trata el hemisferio este completamente separado del hemisferio oeste. Por ejemplo, no hay una "extensión de los Estados Unidos", hay un "US-E" y "US-W" y los combino según sea necesario. –

3

Si son un promedio de los ángulos y tiene que tratar con ellos cruzando el 0/360 entonces es más seguro para sumar el seno y coseno de cada valor y luego media = atan2 (suma de seno, suma de cosenos)
(tenga cuidado con el orden de los argumentos en su función atan2)

-2

Promedie por separado las latitudes y longitudes.

Cuestiones relacionadas