2017-01-28 4 views
-1

Мне нужно рассчитать вектор расстояния от двух координат GPS. Цель состоит в том, чтобы вычислить вектор своего изменения в позиции , чтобы координаты были недалеко друг от друга. Я хотел бы рассчитать широтные и продольные расстояния в метрах.Рассчитать вектор в метрах от двух координат GPS

Я нашел что-то here, , но это только дает направление без расстояния.

+0

Вы действительно прочитали то, что вы связали? Это совсем другое. –

+0

Да, извините, я сначала не понял, но теперь я ... Кроме того, я нашел решение. –

ответ

0

Из-за того, что эти координаты очень близки в моем случае, Я сделал приближение, что центр земли и эти две точки образуют треугольник. Таким образом, я могу использовать Al Kashi theorem.

Вот код:

// Common values 
    double b  = EARTH_RADIUS + destination.altitude; 
    double c  = EARTH_RADIUS + this.altitude; 

    double b2  = b*b; 
    double c2  = c*c; 
    double bc2  = 2*b*c; 

    // Longitudinal calculations 
    double alpha = destination.longitude - this.longitude; 
    // Conversion to radian 
    alpha = alpha * Math.PI/180; 
    // Small-angle approximation 
    double cos  = 1 - alpha*alpha/2; //Math.cos(alpha); 
    // Use the law of cosines/Al Kashi theorem 
    double x  = Math.sqrt(b2 + c2 - bc2*cos); 

    // Repeat for latitudinal calculations 
    alpha  = destination.latitude - this.latitude; 
    alpha  = alpha * Math.PI/180; 
    double cos = 1 - alpha*alpha/2; //Math.cos(alpha); 
    double y = Math.sqrt(b2 + c2 - bc2*cos); 

    // Obtain vertical difference, too 
    double z = destination.altitude - this.altitude; 

    return new Vector3D(x, y, z); 

Как вы можете видеть, я приближена косинус, потому что углы действительно мало. Я думаю, что добавление высоты к радиусу Земли не дает лучшее приближение, , но так как у меня это ...

Я проверил это по сравнению с Google Maps на расстоянии 38 метров, и я получил результат 37.877. Мой результат может быть более точным! ^^

+0

Вы имеете в виду [закон косинусов] (https://en.wikipedia.org/wiki/Law_of_cosines)? Википедия говорит, что это называется «[Аль-Каши] (https://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_d%27Al-Kashi)» на французском языке. –

+1

Я не понимаю, как «три точки образуют треугольник», как предполагается, является приближением. –

+0

Да, это закон косинусов, и я французский :) Я оговорился, три точки эффективно образуют треугольник, и это не приближение, аппроксимация заключается в том, что траектория между двумя точками не совсем прямая, поэтому в этом смысле , моделируя проблему здесь, поскольку треугольник является приближением. Хорошее приближение относительно расстояния между двумя точками. –