Kịch bản này chạy tốt lần đầu tiên nhưng thất bại khi chạy lần thứ hai. Vấn đề dường như là câu lệnh KMLToLayer_conversion tạo ra một cơ sở dữ liệu địa lý tệp (không có gì bất ngờ) mà sau đó không thể xóa ngay cả khi lớp tính năng bị xóa khỏi bản đồ, tệp lớp bị xóa và nội dung cơ sở dữ liệu địa lý bị xóa. Tôi muốn tự dọn dẹp khi kịch bản này được thực hiện với tất cả các dấu vết khác với các lớp tính năng mới trong MasterGDB. Vấn đề là tập lệnh này chỉ có thể được chạy một lần trừ khi bạn thoát ArcMap, xóa thủ công thư mục trong Windows, sau đó khởi động lại ArcMap. Chạy các lệnh riêng lẻ trong cửa sổ Python chắc chắn sẽ hiển thị "" nhưng thư mục cho cơ sở dữ liệu địa lý vẫn còn. Vì vậy, những gì người mới này mất tích ở đây? (Trong tập lệnh kiểm tra / gỡ lỗi này, chỉ có một tệp KML duy nhất "C:
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)