Esta secuencia de comandos se ejecuta bien el primer tiempo, pero produce un error cuando se ejecuta el segundo tiempo. El problema parece ser que el KMLToLayer_conversion instrucción crea una geodatabase de archivos (ninguna sorpresa), que posteriormente no pueden ser eliminados, incluso cuando la clase de entidad se quita del mapa, la capa de archivo es eliminado, y la geodatabase contenido se elimina. Me gustaría limpiar después de mí mismo cuando esta secuencia de comandos se hace con todos los rastros ido a otros, a continuación, la nueva característica de clases dentro de MasterGDB. El problema es que este script sólo se puede ejecutar una vez, a menos que salga de ArcMap, eliminar manualmente la carpeta de Windows, a continuación, volver a iniciar ArcMap. Ejecución de los comandos individuales dentro de la ventana de Python, inevitablemente, se muestra un "" pero el directorio de la geodatabase se mantiene. Así que lo que este novato que falta aquí? (En esta prueba y depuración de secuencia de comandos, sólo hay un único archivo KML "C:\Temp\KKKLLL.KML" -- que convierte muy bien).
import arcpy, os
# Name: BatchKML_to_GDB.py
# Source: AS16818.ZIP from acripts.esri.com
import arcpy, os
# Set local variables and location for the consolidated file geodatabase
KMLDir = "C:\TEMP\KML3"
outLocation = "C:\\Temp\\MuleDeer"
MasterGDB = 'AllKLM5.gdb'
MasterGDBLocation = os.path.join(outLocation, MasterGDB)
# Create the master FileGeodatabase as needed
if not (arcpy.Exists(MasterGDBLocation)):
print MasterGDBLocation + " doesn't exist; creating it now"
arcpy.CreateFileGDB_management(outLocation, MasterGDB)
# Convert all KMZ and KML files found in the current workspace
# Set workspace (where all the KMLs are)
arcpy.env.workspace=KMLDir
for kmz in arcpy.ListFiles('*.KM*'):
print "CONVERTING: " + os.path.join(arcpy.env.workspace,kmz)
kmz2 = os.path.join(arcpy.env.workspace,kmz)
arcpy.KMLToLayer_conversion(kmz2, outLocation)
print "Done"
# Change the workspace to fGDB location
arcpy.env.workspace = outLocation
# Loop through all the FileGeodatabases within the workspace
wks = arcpy.ListWorkspaces('*', 'FileGDB')
# Drop Master GDB from the array/list
wks.remove(MasterGDBLocation)
for fgdb in wks:
# Change the workspace to the current FileGeodatabase
arcpy.env.workspace = fgdb
featureClasses = arcpy.ListFeatureClasses('*', '', 'Palacemarks')
for fc in featureClasses:
fcCopy = fgdb + os.sep + 'Placemarks' + os.sep + fc
arcpy.FeatureClassToFeatureClass_conversion(fcCopy, MasterGDBLocation, fgdb[fgdb.rfind(os.sep)+1:-4])
arcpy.Delete_management(fcCopy)
arcpy.Delete_management("C:\\Temp\\Muledeer\\KKKLLL.lyr")
arcpy.Delete_management(fgdb)