Tengo una carpeta con una salida (shapefiles) de una iteración. En esta salida, quiero realizar una unión entre dos attributetables.
Hasta aquí todo bien. Ahora viene la parte complicada. Hay diferentes shapefiles (digamos 20), todos con diferentes nombres. Cada attributetable tiene exactamente la misma cantidad de campos (tal vez el número de filas difiere). Lo que quiero que haga el script es: elegir dos tablas de atributos específicas que pertenezcan juntas (basándose en el nombre), unirlas y luego pasar a las siguientes dos tablas de atributos hasta que no haya más tablas que unir. Todos los shapefiles tienen nombres diferentes, pero donde está el %Name% en el script, el nombre es el mismo.
Por ejemplo:
abc_clip_diss JOIN abc_full_diss
def_clip_diss JOIN def_full_diss
ghi_clip_diss JOIN ghi_full_diss
Lo que conseguí hasta ahora y no es mucho porque soy muy nuevo en python es eso:
import arcpy
#set workspace
arcpy.env.workspace =
#set variables
inFeatures = "%Name%_clip_diss"
joinField = "WLType"
joinTable = "%Name%_clip_full"
fieldList = ["area_ha"]
#JoinField "JoinField_management (in_data, in_field, join_table, join_field, {fields})"
JoinField_management ("inFeatures" , "joinField" , "joinTable" , "fieldList")
¿Creo que un bucle sería bueno aquí? Pero no entiendo muy bien cómo funciona un bucle. No entiendo lo que significa ese for XX en YY. Y no estoy seguro de si puedo hacer esa cosa: %Name%.
¿Alguna idea, pista o sugerencia?
EDITAR 7/8/14 4:00 pm
import arcpy
import os
#set workspace
arcpy.env.workspace = "C:\\Users\\Documents\\Wetland\\New_Folder"
ws = arcpy.env.workspace
#create a list of features
fcl = arcpy.ListFeatureClasses()
#loop through the list
for fc in fcl:
basename = fcl.split("_")[0] #split name of features and only take the first word as a basename
inFeatures = os.path.join(ws, basename + "_clip_diss") #The table or feature class to which the join table will be joined.
joinField = "WLType" #The field in the input table on which the join will be based.
joinTable = os.path.join(ws, basename + "_clip_full") #The table to be joined to the input table.
fieldList = "WLType" #The field in the join table that contains the values on which the join will be based.
#JoinField "JoinField_management (in_data, in_field, join_table, join_field, {fields})"
arcpy.JoinField_management(inFeatures , joinField , joinTable , fieldList)
Al ejecutar este código me encuentro con varios problemas. El mayor fue el error 000732 que decía "los archivos no existen". He convertido todos mis shapefiles en una geodatabase que ha funcionado. La geodatabase está en la carpeta "New_Folder".
Pero al ejecutar el código ahora, sigue sin funcionar. No se une una tabla a otra. Me pregunto dónde está el problema. ¿Alguien puede verlo?