Come trovare un punto sulla superficie terrestre dati un punto di origine, distanza e direzione (azimut)

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

  •  06-07-2019
  •  | 
  •  

Domanda

La domanda precedente "Geoalgoritmo per trovare coordinate di punto da una posizione nota per distanza e rilevamento" chiede la stessa cosa, ma la soluzione trovata è una approssimazione approssimativa. Voglio una soluzione più accurata. Sto confrontando i risultati con le Great Circle Distance , che è una delle migliori Distanza geografica formule conosciute.

È stato utile?

Soluzione

Questa è la formula migliore che ho visto finora, da 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)

Altri suggerimenti

Quanto distano questi due punti? Sono un fan dell'utilizzo delle proiezioni di Gauss-Kruger, che funzionano bene se i due punti si trovano a una distanza di circa 100 miglia nautiche. Ha il vantaggio di permetterti di lavorare con la trigonometria regolare nello spazio locale, e poi di riconvertirlo in coordinate geodetiche.

Se sono più distanti da quello, ricado sul Grande Cerchio, ma con il raggio del cerchio come raggio di curvatura della Terra in un dato punto lungo il cuscinetto desiderato, calcolato usando l'ellissoide WGS-84.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top