17 votos

¿Lo que ' s la diferencia entre vincenty y gran círculo distancia cálculos?

De Python geopy paquete incluye dos técnicas de medición de distancia: gran círculo y fórmulas de Vincenty.

>>> from geopy.distance import great_circle
>>> from geopy.distance import vincenty
>>> p1 = (31.8300167,35.0662833) # (lat, lon) - https://goo.gl/maps/TQwDd
>>> p2 = (31.8300000,35.0708167) # (lat, lon) - https://goo.gl/maps/lHrrg
>>> vincenty(p1, p2).meters
429.16765838976664
>>> great_circle(p3, p4).meters
428.4088367903001

¿Cuál es la diferencia? ¿Que medida de la distancia se prefiere?

21voto

skfd Puntos 463

De acuerdo a Wikipedia, Vincenty la fórmula es más lento pero más preciso:

Vincenty de las fórmulas de los dos métodos iterativos utilizados en geodesia para calcular la distancia entre dos puntos en la superficie de un esferoide, desarrollado por Thaddeus Vincenty (1975a) se basan en la supuesto de que la figura de la Tierra es una esfera achatada, y por lo tanto, son más precisos que los métodos tales como el gran círculo de la distancia que suponga una Tierra esférica.

La precisión de la diferencia es ~0.17% en un 428 metros de distancia en Israel. He hecho una rápida y sucia de la prueba de velocidad:

<class 'geopy.distance.vincenty'>       : Total 0:00:04.125913, (0:00:00.000041 per calculation)
<class 'geopy.distance.great_circle'>   : Total 0:00:02.467479, (0:00:00.000024 per calculation)

Código:

import datetime
from geopy.distance import great_circle
from geopy.distance import vincenty
p1 = (31.8300167,35.0662833)
p2 = (31.83,35.0708167)

NUM_TESTS = 100000
for strategy in vincenty, great_circle:
    before = datetime.datetime.now()
    for i in range(NUM_TESTS):
        d=strategy(p1, p2).meters
    after = datetime.datetime.now()
    duration = after-before
    print "%-40s: Total %s, (%s per calculation)" % (strategy, duration, duration/NUM_TESTS)

Para concluir: Vincenty la fórmula se duplica el tiempo de cálculo en comparación con gran círculo, y su precisión de ganancia en el punto de prueba es de ~0.17%.

Desde el tiempo de cálculo es insignificante, Vincenty la fórmula preferida para cada necesidad práctica.

Actualización: a raíz de los comentarios perspicaces por whuber y cffk's y cffk's respuesta, estoy de acuerdo en que la exactitud de ganancia debe ser comparado con el error, no el de la medición. Por lo tanto, Vincenty la fórmula es un par de órdenes de magnitud más precisa, no ~0.17%.

17voto

GSree Puntos 161

Si usted está usando geopy, entonces el great_circle y vincenty distancias son igualmente fáciles de obtener. En este caso, usted debe casi siempre use el que le da el resultado más exacto, es decir, vincenty. Las dos consideraciones (como punto de salida) son la velocidad y la precisión.

Vincenty es dos veces más lento. Pero, probablemente, en una aplicación real de la el aumento de tiempo de ejecución es insignificante. Incluso si la aplicación se llama por un millón de cálculos de distancia, estamos hablando sólo de un la diferencia en los tiempos de un par de segundos.

Para los puntos de uso, el error en vincenty es de 6 µm y el error en el gran círculo de la distancia es de 0,75 m. Entonces yo les digo que es vincenty 120000 veces más precisa (en lugar de un 0,17% más preciso). Para los puntos generales, el error en el gran círculo de la distancia puede ser de hasta un 0,5%. Así que puede usted vive con un 0.5% de error en las distancias? Para uso casual (¿cuál es el distancia desde Ciudad del Cabo a el Cairo?), probablemente usted puede. Sin embargo, muchos de los SIG las aplicaciones tienen mucho más estrictas que los requisitos de precisión. (0.5% es de 5m más 1km. Que realmente hace la diferencia.)

Casi todos los graves asignación de trabajo se lleva a cabo en la referencia elipsoide y por lo tanto, tiene sentido que las distancias deben medirse sobre el elipsoide. Tal vez usted puede conseguir lejos con gran círculo distancias de hoy. Pero para cada nueva aplicación, usted tendrá que comprobar si esto es aceptable. Mejor es usar el elipsoidal distancia desde el inicio. Podrás dormir mejor por la noche.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X