7 votos

El cálculo de Campo basado en el nombre de archivo shapefile

Tengo varios archivos de forma a la que he añadido un campo llamado "gname1". Para cada shapefile, quiero "gname1" para el nombre de cada archivo de forma, para cada función dentro de la shapefile. Me doy cuenta de que hay varias maneras de hacer esto, pero quiero saber cómo hacer esto en el Campo "Calculadora" de la herramienta. Así, en el "gname1=" caja debajo de la Calculadora de Campo, ¿cuál es la expresión que uso para denotar que quiero que el campo se establece en el shapefile nombre?

Soy muy nuevo en python, y no está del todo familiarizado con el procedimiento para el uso de secuencias de comandos de python para calcular los campos a través de esta herramienta en Arc10. He visto otras preguntas similares a este, pero yo estaba confundido acerca de cómo hacer esto en el campo de la calculadora de la herramienta. Gracias por la ayuda!

6voto

wonderfulthunk Puntos 182

Si estás comprometido con el uso de la Calculadora de Campo de la herramienta de su mejor apuesta puede ser una muy breve secuencia de comandos de python dentro de la "Pre-Lógica de Código de secuencia de Comandos":

def listShpName(yourShp):
  desc=arcpy.Describe(yourShp)
  return desc.Name

...y luego su expresión se

listShpName("LayerInArcMapToC") 

Donde LayerInArcMapToC es el nombre de la capa en ArcMap

He adjuntado una captura de pantalla para ilustrar esto. Por supuesto, usted tendrá que hacer esto en un shapefile por shapefile base si desea utilizar la calculadora de campo. Aquí hay un enlace a la ESRI documentación en la descripción de los datos como he ilustrado arriba: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002z00000018000000

Un enlace adicional a algunas de campo sencilla calculadora de operaciones: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//005s0000002m000000

enter image description here

3voto

Jeremy Brazas Puntos 121

Yo no sé nada acerca de Python, este es mi primer intento por mucho que lo intentara, pero Cody código no funciona para mí. Yo jugueteó un poco con ella y esto es lo que terminó de trabajo.

mxd = arcpy.mapping.MapDocument("Current")
layerlist = arcpy.mapping.ListLayers(mxd)

x = 0
while x < len(layerlist):                  
    layer = layerlist[x]
    layername = str(layer.name)             
    expression = "'" + layername + "'"
    arcpy.AddField_management(layer, "identify", "TEXT")
    arcpy.CalculateField_management (layer, "identify", expression, "PYTHON_9.3", "#")
    x = x + 1

El resultado fue un nuevo campo en cada capa, denominada "identificar", que identificó con el nombre de su capa. Usted no debería tener que editar el código, a menos que usted desee llamar a su columna de algo diferente (luego editar "identificar" en el Addfield y Calculatefield bits a lo que quiera que sea).

2voto

CesarB Puntos 908

Si abre el intérprete de python ventana usted puede hacer esto con bastante facilidad.

En primer lugar tendrás una lista de sus archivos de forma. Usted puede conseguir esto mediante la devolución de la trama de datos. Así que usted necesitará tener un MXD con todos sus archivos. A continuación, en el intérprete de python escriba el siguiente:

mxd = arcpy.mapping.MapDocument("Current") #Returns your mxd
layerlist = arcpy.mapping.ListLayers(mxd)  #Returns your list of layer

Que producirá una lista de todas sus capas. Ahora tenemos que crear un bucle que va a ir a través de todas las capas, encontrar su nombre que añadir a la de campo.

x = 0
while x < len(layerlist):                  #While x is less than the number of layers you have
    layer = layerlist[x]
    desc = arcpy.describe(layer)           #Describe a layer in the layer list
    layername = str(desc.name)             #Get the layer name
    expression = "'" + layername + "'"     #Setup the calculator expression
    arcpy.CalculateField_management (layer, "gname1", expr, "PYTHON_9.3", "#")
    x = x + 1

Esto va a hacer lo que tu buscas, pero ya de nuevo en python va a parecer bastante intimidante y puede ser un poco complicado. Así que si usted tiene algunas preguntas posteriores a ellos, y voy a intentar ayudar.

i-Ciencias.com

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.

Powered by:

X