Domanda

Google Maps mi dà la Lunga Lat e di una posizione in notazione decimale in questo modo:

38.203655, -76,113281

Come faccio a convertire quelli per Coords (gradi, minuti, secondi)

È stato utile?

Soluzione

38.203655 è un valore decimale di gradi. Ci sono 60 minuti è un grado e 60 secondi in un minuto (1degree == == 60min 3600s).

Quindi prendere la parte frazionaria del valore, cioè 0.203655, e moltiplicarlo con il 60 per ottenere minuti, vale a dire 12,2193, che è di 12 minuti, e poi ripetere per la parte frazionaria di minuti, vale a dire 0.2193 = 13,158 mila secondo.

Esempio in python:

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)

Altri suggerimenti

Nel caso in cui avete bisogno di altre funzionalità di geo-correlata in JavaScript, è possibile utilizzare il seguente libreria

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

fornisce le seguenti funzionalità:

  • DMS da / per latitudine decimale / conversioni longitudine
  • calcoli Distanza
  • Calcolo Cuscinetto
  • punto Intersezione calcualtion

libreria Python che fa il trucco:

https://pypi.python.org/pypi/LatLon/1.0.2

Credo che questo vi aiuterà con la soluzione:

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top