À 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.
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.728056Comme 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.
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;
**begin 23°26’49”**
degrees = 23
minutes = 26
seconds = 49
decimal = ((minutes * 60)+seconds) / (60*60))
answer = degrees + decimal
**finish 23.44694444**