2011-11-25 3 views

Répondre

20

Par "Coordonnées décimales", voulez-vous dire la latitude et la longitude (aussi connu sous le nom de degré décimal)? Si oui, ce que vous essayez de faire est assez facile:

donné une DMS (degrés, minutes, secondes) coordonnées telles que W87 ° 43'41 ", il est trivial de le convertir en un certain nombre de degrés décimaux en utilisant la méthode suivante: Calculez le nombre total de secondes, 43′41″ = (43*60 + 41) = 2621 secondes. La partie fractionnaire est le nombre total de secondes divisé par 3600. 2621/3600 = ~ 0,728056 Ajouter degrés fractionnaires à entiers degrés pour produire le résultat final: 87 + 0,728056 = 87,728056

Comme il est une coordonnée de longitude ouest, nie le résultat. Le résultat final est -87.728056.

De Wikipedia. Voici un Javascript widget qui fait la même chose.

21

Cela dépend du format de votre source. Si elle est déjà divisée en degrés (d), minutes (m) et seconde (s), votre algorithme est:

(en supposant d est peut être positif ou négatif)

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

Si elle est smooshed ensemble dans une chaîne, le format habituel est:

"ddd.mmss"

Parse donc à l'aide d'une expression régulière ou String.substring() pour obtenir m et s.

retransforme est:

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

Merci. Testé sur http://www.sunearthtools.com/dp/tools/conversion.php et cela fonctionne –

Questions connexes