Sto cercando uno strumento online o uno che posso scaricare per convertire DD in DMS.
Ad esempio, voglio convertire da:
41.590833, -93.620833 a 41 ° 35 ′ 27 ″ N, 93 ° 37 ′ 15 ″ O ... Quelle sono le coordinate, secondo un Geohack , per Des Moines.
Sto cercando uno strumento online o uno che posso scaricare per convertire DD in DMS.
Ad esempio, voglio convertire da:
41.590833, -93.620833 a 41 ° 35 ′ 27 ″ N, 93 ° 37 ′ 15 ″ O ... Quelle sono le coordinate, secondo un Geohack , per Des Moines.
Risposte:
Poiché anche il codice Microsoft è difettoso, può essere utile fornire lo pseudocodice corretto per la conversione.
Per convertire i gradi decimali x in gradi ( d ), minuti ( m ) e secondi (decimale) ( s ), effettuare le seguenti operazioni:
Declare d, m as integer, s as float
If x < 0, then sign = -1 else sign = +1
Let y = Abs(x) ' Work with positive values only.
Let d = Int(y) ' Whole degrees. Floor() is ok too.
Let z = 60*(y - d) ' The fractional degrees, converted to minutes.
Let m = Int(z) ' Whole minutes.
Let s = 60*(z - m) ' The fractional minutes, converted to seconds.
Assert sign*(((s/60) + m)/60 + d) == x ' This confirms a correct result.
Return (sign*d, m, s)
Invece di restituire una laurea firmata, puoi indicare N / S o E / W alla fine:
If x is a latitude, then
If sign == -1 then hemisphere = "S" else hemisphere = "N"
Else {x is a longitude}
If sign == -1 then hemisphere = "W" else hemisphere = "E"
End if
Return (d, m, s, hemisphere)
Se lo desideri, puoi arrotondare s a un numero intero e formattare i risultati in modo che corrispondano al modulo indicato nella domanda.
Non è molto complicato da fare, ma tendo a usare questa pagina Web . Ma esaminiamo la latitudine nel tuo esempio. I gradi decimali sono gli stessi, in questo caso 41. Ora, prendi il resto e moltiplica per 60. Questo ti dà 35.44998. La parte intera è i secondi (35 '). Ora, prendi il resto e moltiplica di nuovo per 60. Ottieni i secondi (26.9998), che si confronta positivamente con i risultati di cui sopra.
Guarda questa libreria di python https://github.com/ewheeler/PyDecimalDegrees
o questi script online / offline basati su Perl http://www.movable-type.co.uk/scripts/latlong.html
Potrebbe esserti d'aiuto. Prova. http://transition.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html
C'è una bella classe semplice per farlo su StackOverflow in C #: /programming/4504956/formatting-double-to-latitude-longitude-human-readable-format