0 votos
668 vistas

Buenas a tod@s.

Necesito saber si es posible generar un codigo en VB o en Python que me añada un campo en la tabla de un fichero shape cargado en el TOC y se rellene dicho campo nuevo con la composición de otros ya existentes, por ejemplo, si en el shape existe el campo NOMBRE y el campo APELLIDO, que se cree el campo NOMBRE COMPLETO y se rellene con la composición de los campos NOMBRE y APELLIDO.

Me resultaría de gran ayuda un codigo como ese.

Saludos

por Novato (100 puntos)   en ArcGIS Desktop | 668 vistas

1 Respuesta

0 votos
Saludos, aqui te dejo unas lineas en python:

# Las lineas que comienzan con # no se leen, son comentarios. O lo que hay luego de # tampoco se lee

import arcpy                          # Tu encabezado debe llevar esta linea import
.....
arcpy.AddField_management("Datos", "NomComp", "TEXT")  
                                            # esta linea añade el campo
                                            # NomComp a el
                                            # shapefile Datos, y es de tipo texto que te
                                            # permitira almacenar Nombres y apellidos.

# Para actualizar NomComp puedes usar Field Calculator (es mas facil de forma interactiva)
# O usar cursores. Aqui te pondre una 'plantilla' para usar cursores, que deberas ajustar a tu codigo en python

arcpy.AddMessage('> Actulizando el campo Nombre completo...')  # Es un mensaje en tu pantalla
Fields = ["Nombre", "Apellido","NomComp"]     # Este es un array con los campos que necesitas trabajar
Cursor = arcpy.da.UpdateCursor("Datos", Fields)  
                                                     # Crea Cursor (modo Update), con el shapefile "Datos", y
                                                     # los campos anteriormente definidos
for row in Cursor:                             # este for recorrera todos los registros de tu shapefile
      row[2] = row[0] + ', ' + row[1]       # y actualizara row[2] (este campo es NomComp) con el
      Cursor.updateRow(row)               # contenido de row[0] (Nombre) , una coma, y luego row[1]
del row                                             # (Apellido). Cursor.updateRow(row) graba los cambios.
del Cursor

Listo, espero te sirva y funcione bien.
por Novato (151 puntos)  
0
Gracias mil....lo probaré en cuanto pueda...ahora ando liado con otro tema. Gracias otra vez!
1,438 preguntas
1,585 respuestas
976 comentarios
1,267 usuarios