¿Cómo se convierten grados decimales a grados minutos Secands en Python? ¿Ya hay una fórmula escrita?Cómo convertir DD a DMS en Python
Respuesta
Use fmod
y redondee para obtener los grados y la fracción separados. Multiplica la fracción por 60 y repite para obtener minutos y un resto. Luego, multiplica esa última parte por 60 nuevamente para obtener la cantidad de segundos.
Probablemente quiso decir 'math.modf'. – musiphil
Sólo un par de * 60
multiplicaciones y un par de int
truncamientos, es decir:
>>> decdegrees = 31.125
>>> degrees = int(decdegrees)
>>> temp = 60 * (decdegrees - degrees)
>>> minutes = int(temp)
>>> seconds = 60 * (temp - minutes)
>>> print degrees, minutes, seconds
31 7 30.0
>>>
Esto es exactamente lo que divmod
fue inventado para:
>>> def decdeg2dms(dd):
... mnt,sec = divmod(dd*3600,60)
... deg,mnt = divmod(mnt,60)
... return deg,mnt,sec
>>> dd = 45 + 30.0/60 + 1.0/3600
>>> print dd
45.5002777778
>>> decdeg2dms(dd)
(45.0, 30.0, 1.0)
No creo que esto funcione para negativos. –
No funciona con negativo. -122,442 devoluciones (-123,33,28.8). Debería ser (-122,26,31.12) –
@baens - ¿Quiere decir '(-122, -26, -31.12)'? Creo que '-123 + 33/60 + 28.8/3600' de hecho es igual a -122.442' – PaulMcG
aquí está mi versión actualizada basan en Paul McGuire's. Éste debe manejar los negativos correctamente.
def decdeg2dms(dd):
is_positive = dd >= 0
dd = abs(dd)
minutes,seconds = divmod(dd*3600,60)
degrees,minutes = divmod(minutes,60)
degrees = degrees if is_positive else -degrees
return (degrees,minutes,seconds)
Si desea manejar los negativos correctamente, la primera medida distinta de cero se establece en negativo. Es contrario a la práctica común especificar todos los grados, minutos y segundos como negativos (Wikipedia muestra 40 ° 26.7717, -79 ° 56.93172 como un ejemplo válido de notación grados-minutos, en el que los grados son negativos y los minutos no tienen signo), y el establecimiento de grados como negativo no tiene ningún efecto si la porción de grados es 0. esta es una función que maneja adecuadamente este, basado en Paul McGuire y funciones Baens':
def decdeg2dms(dd):
negative = dd < 0
dd = abs(dd)
minutes,seconds = divmod(dd*3600,60)
degrees,minutes = divmod(minutes,60)
if negative:
if degrees > 0:
degrees = -degrees
elif minutes > 0:
minutes = -minutes
else:
seconds = -seconds
return (degrees,minutes,seconds)
este es mi código Python:
def DecimaltoDMS(Decimal):
d = int(Decimal)
m = int((Decimal - d) * 60)
s = (Decimal - d - m/60) * 3600.00
z= round(s, 2)
if d >= 0:
print ("N ", abs(d), "º ", abs(m), "' ", abs(z), '" ')
else:
print ("S ", abs(d), "º ", abs(m), "' ", abs(z), '" ')
Usar 'Decimal' como nombre de variable puede entrar en conflicto con' decimal.Decimal' y no es una buena idea. – musiphil
El signo ha regresado ser mejor por separado, de modo que pueda ser utilizado para elegir ('N', 'S')
o ('E', 'W')
, por ejemplo.
import math
def dd_to_dms(degs):
neg = degs < 0
degs = (-1) ** neg * degs
degs, d_int = math.modf(degs)
mins, m_int = math.modf(60 * degs)
secs = 60 * mins
return neg, d_int, m_int, secs
- 1. Traducir Exif DMS a DD Geolocalización con Python
- 2. Cómo convertir MM/DD/YYYY a YYYY-MM-DD?
- 3. convertir dd/mm/aaaa a mm/dd/aaaa en javascript
- 4. Convertir dd/mm/aaaa en MM/dd/YYYY
- 5. Convertir NSDate a mm/dd/aaaa
- 6. ¿Cómo convertir una fecha a partir dd-mm-aa a mm-dd-aa
- 7. Convertir mm-dd-aaaa en aaaa-mm-dd
- 8. Perl o Python: Convierta la fecha de dd/mm/aaaa a aaaa-mm-dd
- 9. Manera más limpia de convertir dd-mm-yyyy a formato mm-dd-aaaa en Javascript
- 10. sql fecha convertir a servidor cadena MM/DD/AAAA
- 11. Cómo convertir Fecha y hora en formato dd/mm/aaaa
- 12. Función de Javascript para convertir la fecha aaaa/mm/dd a dd/mm/aa
- 13. Cómo convertir `ctime` a` datetime` en Python?
- 14. Convertir a formato de fecha dd/mm/aaaa
- 15. Convertir Python a R
- 16. Cómo convertir una cadena "dd/mm/aaaa" a fecha y hora en SQL Server?
- 17. Cómo convertir el objeto DateTime a dd/mm/aaaa en C#?
- 18. Cómo convertir datetime a string en linqtosql?
- 19. python: cómo convertir moneda a decimal?
- 20. Cómo convertir XSD a Python Clase
- 21. Yendo de MM/DD/AAAA a DD-MMM-AAAA en Java
- 22. Convertir bytes a bits en python
- 23. Convertir lista a tupla en Python
- 24. convertir exponencial a decimal en Python
- 25. Fecha de conversión dd-MMM-aaaa a dd-MM-aaaa en java
- 26. cómo convertir el código de Python 3 a Python 2?
- 27. Oracle to_date, de mm/dd/aaaa a dd-mm-aaaa
- 28. Cómo convertir aaaa-MM-dd hh: mm: ss a "decimoquinto Abr 2010" usando PHP
- 29. Cómo convertir DateTime a VarChar
- 30. PHP convertir el formato de fecha dd/mm/aaaa => aaaa-mm-dd
@David: es una cuestión de multiplicar la parte decimal por 60. ¿Qué necesitas más allá de eso? – SilentGhost