Convertire una coordinata geografica dal sistema EPSG:4326 WGS 84 al sistema Gradi e Minuti decimali e viceversa

Da Gambas-it.org - Wikipedia.
Versione del 24 lug 2025 alle 20:31 di Vuott (discussione | contributi) (Creata pagina con "==Conversione da gradi decimali EPSG:4326 WGS 84 a Gradi e Minuti decimali (GAD)== Nell'esempio che segue convertiremo: Latitudine: 41.88993 <BR>Longitudine: 12.492317 in...")
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

Conversione da gradi decimali EPSG:4326 WGS 84 a Gradi e Minuti decimali (GAD)

Nell'esempio che segue convertiremo:

Latitudine: 41.88993
Longitudine: 12.492317

in

Lat: 41°53.396' N
Lon: 12°29.539' E

Public Sub Main()

 Dim lat As Float = 41.88993
 Dim lon As Float = 12.492317

 Print "Latitudine (GMD): "; GradiMinuti(lat, "N", "S")
 Print "Longitudine (GMD): "; GradiMinuti(lon, "E", "W")

End


Private Function GradiMinuti(coord As Float, posSymbol As String, negSymbol As String) As String

 Dim segno As String
 Dim gradi As Integer
 Dim minutiDecimali As Float

' Determina se è nord/sud o est/ovest:
 If coord < 0 Then
   segno = negSymbol
   coord = -coord
 Else
   segno = posSymbol
 Endif

' Estrae gradi interi:
 gradi = Int(coord)

' Calcola minuti decimali:
 minutiDecimali = (coord - gradi) * 60

' Restituisce stringa nel formato: 41°53.395' N:
 Return gradi & "°" & Format(minutiDecimali, "0.000") & "' " & segno

End


Conversione da gradi e minuti decimali (GMD) a gradi decimali (EPSG:4326 / WGS 84)

Nell'esempio che segue convertiremo:

Lat: 41°53.396' N
Lon: 12°29.539' E

in

Latitudine: 41.88993
Longitudine: 12.492317

Public Sub Main()

' Esempio: Lat 41°53.396' N → 41 + 53.396/60:
 Dim latGradi As Integer = 41
 Dim latMinuti As Float = 53.396
 Dim latSegno As String = "N"

 Dim lonGradi As Integer = 12
 Dim lonMinuti As Float = 29.539
 Dim lonSegno As String = "E"

 Dim latDec As Float = GMDToDecimal(latGradi, latMinuti, latSegno)
 Dim lonDec As Float = GMDToDecimal(lonGradi, lonMinuti, lonSegno)

 Print "Latitudine (gradi decimali): "; Format(latDec, "0.000000")
 Print "Longitudine (gradi decimali): "; Format(lonDec, "0.000000")

End


Private Function GMDToDecimal(gradi As Integer, minuti As Float, segno As String) As Float

 Dim coord As Float

 coord = gradi + minuti / 60

' Inverte il segno per sud/ovest:
 If segno = "S" Or segno = "W" Then
   coord = -coord
 Endif

 Return coord

End