Comment trouver un point à la surface de la Terre à partir d'un point d'origine, d'une distance et d'une direction (azimut)

StackOverflow https://stackoverflow.com/questions/1019642

  •  06-07-2019
  •  | 
  •  

Question

La question précédente "Géoalgorithme permettant de trouver les coordonnées d'un point à partir d'un emplacement connu en fonction de la distance et du relèvement" demande la même chose, mais la solution trouvée est une approximation approximative. Je veux une solution plus précise. Je compare les résultats avec les formules Great Circle Distance , ce qui est l'un des meilleurs choix. formules Distance géographique connues.

Était-ce utile?

La solution

C’est la meilleure formule que j’ai vue jusqu’à présent, tirée de http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html

a, b = major & minor semiaxes of the ellipsoid   
f = flattening (a−b)/a   
φ1, φ2 = geodetic latitude   
s = length of the geodesic   
α1, α2 = azimuths of the geodesic (initial/final bearing)    

tanU1 = (1−f).tanφ1 (U is ‘reduced latitude’)    
cosU1 = 1/√(1+tan²U1), sinU1 = tanU1.cosU1 (trig identities; §6)     
σ1 = atan2(tanU1, cosα1)    (1)
sinα = cosU1.sinα1  (2)
cos²α = 1 − sin²α (trig identity; §6)    
u² = cos²α.(a²−b²)/b²    
A = 1+u²/16384.{4096+u².[−768+u².(320−175.u²)]} (3)
B = u²/1024.{256+u².[−128+u².(74−47.u²)]}   (4)

σ = s / b.A (1st approximation), σ′ = 2π     
while abs(σ−σ′) > 10-12 { (i.e. 0.06mm)  
        cos2σm = cos(2.σ1 + σ)  (5)
    Δσ = B.sinσ.{cos2σm + B/4.[cosσ.(−1 + 2.cos²2σm) − B/6.cos2σm.(−3 + 4.sin²σ).(−3 + 4.cos²2σm)]} (6)
    σ′ = σ   
    σ = s / b.A + Δσ    (7)
}        
φ2 = atan2(sinU1.cosσ + cosU1.sinσ.cosα1, (1−f).√[sin²α + (sinU1.sinσ − cosU1.cosσ.cosα1)²])    (8)
λ = atan2(sinσ.sinα1, cosU1.cosσ − sinU1.sinσ.cosα1)    (9)
C = f/16.cos²α.[4+f.(4−3.cos²α)]    (10)
L = λ − (1−C).f.sinα.{σ+C.sinσ.[cos2σm + C.cosσ.(−1 + 2.cos²2σm)]} (difference in longitude)    (11)
α2 = atan(sinα, −sinU1.sinσ + cosU1.cosσ.cosα1) (reverse azimuth)   (12)
p2 = (φ2, λ1+L)

Autres conseils

À quelle distance se trouvent ces deux points? Je suis fan des projections Gauss-Kruger, qui fonctionnent bien si les deux points sont à moins de 100 milles marins environ. Il présente l’avantage de vous permettre de travailler avec une trigonométrie régulière dans l’espace local, puis de le reconvertir en coordonnées géodésiques.

S'ils sont plus éloignés que cela, je retombe sur le Grand Cercle, mais avec le rayon du cercle comme rayon de courbure de la Terre en un point donné le long du relèvement souhaité, calculé à l'aide de l'ellipsoïde WGS-84.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top