0 votos
312 vistas
por Novato (101 puntos)   en ArcGIS Desktop

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

1 Respuesta

0 votos
por Novato (152 puntos)  
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 (101 puntos)  
Gracias mil....lo probaré en cuanto pueda...ahora ando liado con otro tema. Gracias otra vez!
Ofertas de trabajo SIG

Un buen usuario

  1. Comparte lo que sabe
  2. Demuestra su amabilidad
  3. Hace preguntas claras
  4. Escribe correctamente
  5. No hace daño a nadie
Gana 500 puntos y obtén un Certificado SIG validado por ArcGeek.

 

...