Tengo un documento de Excel con muchas coordenadas en el siguiente formato:
lat: 2.03° S
lon: 80.00° W
¿Es posible importar estos datos directamente en ArcMap o tengo que transformarlos forzosamente en numéricos puros antes de cargarlos?
Tengo un documento de Excel con muchas coordenadas en el siguiente formato:
lat: 2.03° S
lon: 80.00° W
¿Es posible importar estos datos directamente en ArcMap o tengo que transformarlos forzosamente en numéricos puros antes de cargarlos?
Puedes hacerlo usando python. Agregue su excel a ArcMap, modifique las líneas # y luego ejecute el código de abajo en la ventana de Python. Estoy usando el Módulo de expresiones regulares (re) para encontrar la parte flotante (por ejemplo 2,1) de cada coordenada y un Diccionario para traducir W a -1, E a 1 y así sucesivamente.
import arcpy, re
temp = r'in_memory\excel'
outlayer = 'out_lyr'
sp = arcpy.SpatialReference(4326) #Change EPSG code
latlon = ['lat','lon'] #Change to match the names of lat and long fields in excel
sheet_name = "Blad1$" #Change to match the name of excel sheet
arcpy.CopyRows_management(sheet_name, temp)
coords = ['X','Y']
for field in coords:
arcpy.AddField_management(in_table=temp, field_name=field, field_type='DOUBLE')
d = {'W':-1,'E':1, 'N':1, 'S':-1}
with arcpy.da.UpdateCursor(temp,coords+latlon) as cursor:
for row in cursor:
row[0] = d[row[2][-1]] * float(re.findall("\d+\.\d+", row[2])[0])
row[1] = d[row[3][-1]] * float(re.findall("\d+\.\d+", row[3])[0])
cursor.updateRow(row)
arcpy.MakeXYEventLayer_management(table=temp, in_x_field='X', in_y_field='Y',
out_layer=outlayer, spatial_reference=sp)
Si quieres que la capa sea permanente, cópiala en el disco.
¡Lo encontré!
http://pro.arcgis.com/en/pro-app/tool-reference/data-management/convert-coordinate-notation.htm
Esta herramienta permite convertir coordenadas que contienen letras (incluso esos temibles símbolos de grado). Gracias a todos por vuestra ayuda
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.