8
votes

Lat à longs minutes et secondes?

Google Maps me donne la lat et à long terme d'une notation décimale comme celle-ci:

38.203655, -76.113281

Comment puis-je convertir les celles en des coordiens (degrés, minutes, secondes)


2 commentaires

degrés décimaux à degrés minutes quelques secondes


Les systèmes de coordonnées et les conversions sont expliqués ici, avec pseudocode: en.wikipedia.org/ wiki / geographic_coordinate_conversion "> Conversion de coordonnée (de Wikipedia)


4 Réponses :


18
votes

38.203655 est une valeur décimale de degrés. Il y a 60 minutes est une degré et 60 secondes en une minute (1degree == 60min == 3600).

prenez donc la partie fractionnée de la valeur, c'est-à-dire 0,203655 et la multiplie avec 60 pour obtenir des minutes, c'est-à-dire 12.2193, qui est 12 minutes, puis répétez la partie fractionnée des minutes, à savoir 0,2193 = 13,158 000 secondes. P>

Exemple en Python: P>

def deg_to_dms(deg):
    d = int(deg)
    md = abs(deg - d) * 60
    m = int(md)
    sd = (md - m) * 60
    return [d, m, sd]

print deg_to_dms(38.203655)
print deg_to_dms(-76.113281)


1 commentaires

Bonne solution. Remarque mineure: typiquement pour le format DMS, il n'est pas signé mais utilise plutôt la direction cardinale (c'est-à-dire non -76 12 34.567 mais W76 12 34.567).



0
votes

Si vous avez besoin d'autres fonctionnalités géographiques liées à JavaScript, vous pouvez utiliser la bibliothèque suivante

http://www.movable-type.co.uk/scripts/ LatLong.html

Il fournit la fonctionnalité suivante:

  • DMS de / vers des conversions décimales de latitude / longitude
  • Calculs de distance
  • Calcul de roulement
  • Point d'intersection Calculaltion

0 commentaires

0
votes

0
votes

Je pense que cela vous aidera avec la solution:

def deg_min_sec(self,degrees=0.0):
        if type(degrees) != 'float':
            try:
                degrees = float(degrees)
            except:
                print '\nERROR: Could not convert %s to float.' % (type(degrees))
                return 0
        minutes = degrees % 1.0 * 60
        seconds = minutes % 1.0 * 60

        return (degrees, minutes, seconds)


0 commentaires