web-dev-qa-db-fra.com

Comment convertir entre degrés, minutes, secondes aux coordonnées décimales

À la recherche d'un Java utilitaire. C'est encore meilleur si vous pouvez me dire comment le faire à l'aide de la bibliothèque Geotools.

17
Aravind Yarram

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

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

Comme il s'agit d'une coordonnée de longitude ouest, nier le résultat. Le résultat final est -87.728056.

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

21
David Titarenco

Cela dépend de votre format source. S'il est déjà divisé en degrés (D), minutes (m) et secondes, votre algorithme est:

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

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

Si elle est suffisamment basse dans une chaîne, le format habituel est:

"DDD.mmss"

Alors analyser en utilisant une expression régulière ou une chaîne.Substring () pour obtenir m et s.

La conversion est:

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