2011-11-25 52 views
13

Cercare un'utilità java. È ancora meglio se puoi dirmi come farlo usando la libreria di geotools.come convertire tra gradi, minuti, secondi e coordinate decimali

+0

possibile duplicato di [? Come faccio a convertire queste coordinate alle coordinate leggibile da Google Maps] (http://stackoverflow.com/questions/995738/how- do-i-convert-these-coordinates-to-coordinates-readable-by-google-maps) –

risposta

20

Per "coordinate decimali" si intende latitudine e longitudine (noto anche come grado decimale)? Se è così, ciò che si sta cercando di fare è piuttosto semplice:

Dato un DMS (gradi, minuti, secondi) di coordinate come W87 ° 43'41 ", è banale per convertirlo in un certo numero di gradi decimali utilizzando il metodo seguente: Calcolare il numero totale di secondi, 43′41″ = (43*60 + 41) = 2621 secondi. La parte frazionaria è il numero totale di secondi divisi dal 3600. 2621/3600 = ~ 0,728,056 mila Aggiungi gradi frazionali per intere gradi per produrre il risultato finale: 87 + 0,728056 = 87,728056

Dal momento che si tratta di una longitudine ovest coordinare, nega il risultato. Il risultato finale è -87.728056.

Da Wikipedia. Ecco uno Javascript widget che fa la stessa cosa.

21

Dipende dal formato sorgente. Se è già diviso in gradi (d), minuti (M) e secondi (s), l'algoritmo è:

(supponendo che D è può essere positivo o negativo)

dd = Math.signum(d) * (Math.abs(d) + (m/60.0) + (s/3600.0)); 

Se è smooshed insieme in una stringa, il formato abituale è:

"ddd.mmss"

Quindi analizzare fuori utilizzando un'espressione regolare o String.substring() per ottenere me s.

La riconversione è:

d = (int)dd; // Truncate the decimals 
t1 = (dd - d) * 60; 
m = (int)t1; 
s = (t1 - m) * 60; 
8
**begin 23°26’49”** 
degrees = 23 
minutes = 26 
seconds = 49 
decimal = ((minutes * 60)+seconds)/(60*60)) 
answer = degrees + decimal 
**finish 23.44694444** 
+0

Grazie. Testato su http://www.sunearthtools.com/dp/tools/conversion.php e funziona –

Problemi correlati