.... Stavolta il nostro eroe dovrebbe realizzare un programma in VB che
calcola la distanza chilometrica fra due punti (conoscendo esattamente
LATITUDINE e LONGITUDINE)
...... sapere se e' possibile realizzare cio' in VB, e soprattutto dove
trovo la formula per trovare la distanza fra i due punti ? ? ? ?
Per convertire fra i diversi sistemi angolari e per la definizione
delle costanti necessarie, ti rimando al progetto
LL_UTM reperibile a: http://members.xoom.it/flanguasco/
Ciao e se poi avessi problemi ad usarle, contattami pure.
Public Sub Ortho(ByVal Lg1 As Single, ByVal Lt1 As Single _
, ByVal Lg2 As Single, ByVal Lt2 As Single _
, Radiale As Single, Distanza As Single)
'
' Calcola la Radiale e la Distanza del punto di coordinate (Lg2, Lt2)
' rispetto al punto con coordinate (Lg1, Lt1) su di un arco di
' cerchio massimo (linea ortodromica).
' Le coordinate Lg1, Lt1, Lg2, Lt2 devono essere in radianti.
' La Distanza e' in Nautical Miles [nm].
' La Radiale in Gradi Decimali [Grd].
'
Dim D As Single, A As Single
'
D = (Sin((Lt1 - Lt2) / 2!)) ^ 2 _
+ Cos(Lt1) * Cos(Lt2) * (Sin((Lg1 - Lg2) / 2!)) ^ 2
D = 2! * Asin(Sqr(D))
'
If D > 0! Then
A = Acos((Sin(Lt2) - Sin(Lt1) * Cos(D)) / (Sin(D) * Cos(Lt1)))
Else
A = 0!
End If
If Sin(Lg2 - Lg1) < 0! Then A = 2! * CSng(PI) - A
'
Radiale = (RadToGrd(A) - Declinazione + 360!) Mod 360!
'
Distanza = R_TERRA * D
'
'
'
End Sub
Public Sub CONV(ByVal Lg1 As Single, ByVal Lt1 As Single _
, ByVal Lg2 As Single, ByVal Lt2 As Single _
, Velocita As Long, Rotta As Single _
, Distanza As Single, Tempo As Single)
'
' Calcola la Rotta e la Distanza per raggiungere il punto di
' coordinate (Lg2,Lt2) partendo dal punto con coordinate (Lg1,Lt1).
' Calcola anche il Tempo necessario usando la Velocita' data.
' Le coordinate Lg1, Lt1, Lg2, Lt2 devono essere in radianti.
' La Velocita e' in Nodi [kts]. Se = 0 viene usata e ritornata
' la velocita' di crociera.
' La Rotta! in Gradi Decimali [Grd].
' La Distanza! in Nautical Miles [nm].
' Il Tempo! in Minuti [mn].
'
Dim x As Single, y As Single, Angolo As Single
'
x = (Lg2 - Lg1) * Cos((Lt1 + Lt2) / 2!)
y = Lt2 - Lt1
If y = 0! Then y = 0.000001
'
Angolo = Atn(x / y)
If y < 0! Then Angolo = Angolo + CSng(PI)
Rotta = (RadToGrd(Angolo) - Declinazione + 360!) Mod 360!
'
Distanza = R_TERRA * Sqr(x * x + y * y)
'
If Velocita = 0 Then Velocita = VelCrociera
Tempo = 60! * Distanza / CSng(Velocita)
'
'
'
End Sub
Private Function Acos(ByVal X As Double) As Double
'
' Calcola l' ArcoCoseno di x con -1 <= x <= 1.
' Acos e' in radianti.
'
If 0# < X And X <= 1# Then
Acos = Atn(Sqr(1# - X * X) / X)
ElseIf -1# <= X And X < 0# Then
Acos = PI + Atn(Sqr(1# - X * X) / X)
ElseIf X = 0# Then
Acos = PI / 2#
Else
Err.Raise 5, "Acos Function", "Argomento illegale per Acos"
End If
'
'
'
End Function
Public Function Asin(ByVal X As Double) As Double
'
' Calcola l' ArcoSeno di x con -1 <= x <= 1.
' Asin e' in radianti.
'
If Abs(X) < 1# Then
Asin = Atn(X / Sqr(1# - X * X))
ElseIf X = 1# Then
Asin = PI / 2#
ElseIf X = -1# Then
Asin = -PI / 2#
Else
Err.Raise 5, "Asin Function", "Argomento illegale per Asin"
End If
'
'
'
End Function
"Franco Languasco" <MC7...@MCLINK.IT> ha scritto nel messaggio
news:3B2E43A2...@MCLINK.IT...
Sai mica dove posso trovare un database completo di tutti i
paesi/comuni/citta' d' Italia con le relative coordinate Lat e Long ? ? ? ?
?
Ciao e grazie ancora !!!!
"Franco Languasco" <MC7...@MCLINK.IT> ha scritto nel messaggio
news:3B2E43A2...@MCLINK.IT...
> Sai mica dove posso trovare un database completo di tutti i
> paesi/comuni/citta' d' Italia con le relative coordinate Lat e Long ? ? ? ?
Esiste un libro con le coordinate geografiche (Lat, Lon) di tutti i comuni
di Italia: io non l' ho mai comperato ma dovresti facilmente trovarlo in rete.
Ma, forse, in Internet trovi anche qualche sito con tutte le coordinate.
Altri metodi:
- con una carta geografica, squadra e righello puoi facilmente trovare le
posizioni. Tieni presente che con una carta a scala 1:500,000 puoi
apprezzare i 10" di grado (circa 300 [m]).
- ti posso mandare un D.B. (in formato .txt) con qualche centinaio di
posizioni. Purtroppo sono in gran parte posizioni di aeroporti, avio-
superfici ed altri punti di riporto VFR.
- con un GPS da poche lire vai sui punti di tuo interesse e li misuri
(incoraggiamento al turismo...).
- se scarichi il mio programma Volpian2 (ed anche le carte... decine di
MBytes!!) puoi usare la funzione Atlante, andare con il cursore del
mouse sul punto di tuo interesse e leggere direttamente Lat & Long.
Ciao e se poi vuoi, posso darti una mano.
Franco