Necesito convertir la lat/long que se expresa en grados, minutos y segundos en los datos en grados decimales. Por ejemplo, en los datos, aparecen como N335042.06 en la columna de Latitud, y W86031.04 en la columna de Longitud. Ya he hecho este problema antes, donde creé un script que convertía DMS a DD, y viceversa, así que supongo que podría usar trozos de eso. Pero el problema que tengo es cómo ignorar (a falta de una palabra mejor) la 'N' y la 'W' en los datos? ¿Puedo omitirlos? Y los DMS aparecen todos juntos sin símbolos ni espacios.
¿Puedo utilizar len()
, range()
, split()
para especificar qué parte leer del valor? Por ejemplo, ¿se puede hacer lo siguiente?
N335042.06 donde, 33 = grados 50 = minutos 42,06 = segundos...
Me encontré con este Artículo de ESRI, pero está en VB. Probablemente lo utilice como referencia, pero parte de la terminología/sintaxis es diferente a la de Python.
¡Código final que funciona!
# Pre-logic
def latDD(x):
D = int(x[1:3])
M = int(x[3:5])
S = float(x[5:])
DD = D + float(M)/60 + float(S)/3600
return DD
# Expression
latDD(!Latitude!)
4 votos
7 meses después tuve que averiguar cómo hacer esto de nuevo y terminé aquí, ¡gracias por publicar tu código! :)