The goal is to convert an XY layer (from Excel) into a feature class. The "MakeXY" portion works flawlessly, the arcpy.FeatureClassToFeatureClass_conversion portion inevitably returns a 999999 "Table was not found" message. I can build a model and run it and it all works. The exported script, recycled through the Python window, also fails on a 999999. I figure it's got to be an acrpy.env.workspace issue (but may be wrong) and so have added that line to the exported script. Still get the 999999. So what's this newbie doing wrong?
import arcpy
arcpy.env.workspace = r"C:\\Temp\\MuleDeer\\AllKLM5.gdb"
# Local variables:
X12XY = "X12XY"
AllKLM5_gdb = "C:\\Temp\\MuleDeer\\AllKLM5.gdb"
# Process: Feature Class to Feature Class
arcpy.FeatureClassToFeatureClass_conversion(X12XY, AllKLM5_gdb, "CDM_9c_FC", "", "Freq \"Freq\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Freq,-1,-1;Date \"Date\" true true false 8 Date 0 0 ,First,#,SOB$_Features,Date,-1,-1;Time \"Time\" true true false 255 Text 0 0 ,First,#,SOB$_Features,Time,-1,-1;TTF \"TTF\" true true false 8 Double 6 15 ,First,#,SOB$_Features,TTF,-1,-1;Northing \"Northing\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Northing,-1,-1;Easting \"Easting\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Easting,-1,-1;Zone \"Zone\" true true false 255 Text 0 0 ,First,#,SOB$_Features,Zone,-1,-1;Altitude \"Altitude\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Altitude,-1,-1;Maxsnr \"Maxsnr\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Maxsnr,-1,-1;Hdop \"Hdop\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Hdop,-1,-1;Vdop \"Vdop\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Vdop,-1,-1;Satt \"Satt\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Satt,-1,-1;Fix \"Fix\" true true false 255 Text 0 0 ,First,#,SOB$_Features,Fix,-1,-1;V1 \"V1\" true true false 255 Text 0 0 ,First,#,SOB$_Features,V1,-1,-1;V2 \"V2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,V2,-1,-1;T1 \"T1\" true true false 8 Double 6 15 ,First,#,SOB$_Features,T1,-1,-1;T2 \"T2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,T2,-1,-1;H1 \"H1\" true true false 255 Text 0 0 ,First,#,SOB$_Features,H1,-1,-1;H2 \"H2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,H2,-1,-1;S1 \"S1\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S1,-1,-1;S2 \"S2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S2,-1,-1;S3 \"S3\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S3,-1,-1;S4 \"S4\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S4,-1,-1", "")
(The fuller script is a bit more elegant in its use of variables, etc. but fails in the same place with the same error.)
= T =
P.S. Get Spatial, here's the current script which fails as is. The larger script which creates the XY Layer is also available if you want me to post it but it's a pretty plain vanilla "arcpy.MakeXYEventLayer_management" call. I continue to wonder if the "X12XY" reference incomplete. I've also tried a string with contents like "C:\Temp\CDM\X12.xlsx" and "C:\Temp\CDM\x12.xlsx\X12XY" with no success.
arcpy.env.workspace = r"C:\Temp\MuleDeer"
# Local variables:
X12XY = r"X12XY"
AllKLM5_gdb = r"C:\Temp\MuleDeer\AllKLM5.gdb"
# Process: Feature Class to Feature Class
arcpy.FeatureClassToFeatureClass_conversion(X12XY, AllKLM5_gdb, "CDM_9c_FC", "", "Freq \"Freq\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Freq,-1,-1;Date \"Date\" true true false 8 Date 0 0 ,First,#,SOB$_Features,Date,-1,-1;Time \"Time\" true true false 255 Text 0 0 ,First,#,SOB$_Features,Time,-1,-1;TTF \"TTF\" true true false 8 Double 6 15 ,First,#,SOB$_Features,TTF,-1,-1;Northing \"Northing\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Northing,-1,-1;Easting \"Easting\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Easting,-1,-1;Zone \"Zone\" true true false 255 Text 0 0 ,First,#,SOB$_Features,Zone,-1,-1;Altitude \"Altitude\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Altitude,-1,-1;Maxsnr \"Maxsnr\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Maxsnr,-1,-1;Hdop \"Hdop\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Hdop,-1,-1;Vdop \"Vdop\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Vdop,-1,-1;Satt \"Satt\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Satt,-1,-1;Fix \"Fix\" true true false 255 Text 0 0 ,First,#,SOB$_Features,Fix,-1,-1;V1 \"V1\" true true false 255 Text 0 0 ,First,#,SOB$_Features,V1,-1,-1;V2 \"V2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,V2,-1,-1;T1 \"T1\" true true false 8 Double 6 15 ,First,#,SOB$_Features,T1,-1,-1;T2 \"T2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,T2,-1,-1;H1 \"H1\" true true false 255 Text 0 0 ,First,#,SOB$_Features,H1,-1,-1;H2 \"H2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,H2,-1,-1;S1 \"S1\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S1,-1,-1;S2 \"S2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S2,-1,-1;S3 \"S3\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S3,-1,-1;S4 \"S4\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S4,-1,-1", "")
P.P.S Here's the script creating the X12XY object. Works first time, every time. The eventual goal is to batch-process a set of (identical) Excel files into feature classes. The only workbook in the target directory is named XL12.xlsx; the worksheet of interest is labeled "SOB" (Note: The indentation is off as I had to tweak each line manually after pasting it here).
import arcpy, os, sys, traceback
arcpy.env.workspace = r"C:\Temp\CDM"
outPath = r"C:\TEMP\CDM"
arcpy.env.overwriteOutput = True
# Local variables
sWorksheetName = "SOB$"
sProjection = "PROJCS['NAD_1983_UTM_Zone_10N',GEOGCS['GCS_North_American_1983',DATUM['D_North_American_1983',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['false_easting',500000.0],PARAMETER['false_northing',0.0],PARAMETER['central_meridian',-123.0],PARAMETER['scale_factor',0.9996],PARAMETER['latitude_of_origin',0.0],UNIT['Meter',1.0]];-5120900 -9998100 10000;-100000 10000;-100000 10000;0.001;0.001;0.001;IsHighPrecision"
# List all files in folder then list all tables in file
fileList = arcpy.ListFiles("*.xlsx")
print 'Listing .xlsx files in workspace'
try:
# Loop through each file
for fileT in fileList:
fileName = os.path.splitext(fileT)[0]
sDest = fileName + "XY"
sSrc = fileT + "\\" + sWorksheetName
print fileT + " : " + fileName + " : " + sSrc
# Toolbox / Data mgt / Layers and Table vuews"
arcpy.MakeXYEventLayer_management(sSrc, "Easting", "Northing", sDest, sProjection, "")
except:
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
pymsg = "PYTHON ERRORS:\nTraceback Info:\n" + tbinfo + "\nError Info:\n " + str(sys.exc_type) + ": " + str(sys.exc_value) + "\n"
msgs = "ARCPY ERRORS:\n" + arcpy.GetMessages(2) + "\n"
arcpy.AddError(msgs)
arcpy.AddError(pymsg)
print msgs
print pymsg
arcpy.AddMessage(arcpy.GetMessages(1))
print arcpy.GetMessages(1)
P.P.P.S
Spatial guy, I get the concept of the MakeXY table existing only in memory. Less clear on the datatype issue (love non-typed languages - NOT!). The following code puts it all within the "for" loop yet still fails -- but perhaps for a new reason. The Python output is: Listing .xlsx files in workspace
X12.xlsx : X12 : X12.xlsx\SOB$
Reality check: C:\Temp\MuleDeer\AllKLM5.gdb is there
X12XY is there
About to call FeatureClassToFeatureClass_conversion()
ARCPY ERRORS:
ERROR 999999: Error executing function.
The table was not found. [X12FC]
Failed to execute (FeatureClassToFeatureClass).
PYTHON ERRORS:
Traceback Info:
File "<string>", line 42, in <module>
Error Info:
<class 'arcgisscripting.ExecuteError'>: ERROR 999999: Error executing function.
The table was not found. [X12FC]
Failed to execute (FeatureClassToFeatureClass).
I'm assuming (dangerous move) that if output feature class does not already exist the FeatureClassToFeatureClass() will create it. That's sort of the point, isn't it? So am I now battling a syntax error of some sort or just fundamentally unclear about FeatureClassToFeatureClass?
Finally for the night, this system seems happy with the "str(sys.exc_value)" line. Don't ask, don't tell, just keeping my fingers crossed.
import arcpy, os, sys, traceback
arcpy.env.workspace = r"C:\Temp\CDM"
outPath = r"C:\TEMP\CDM"
arcpy.env.overwriteOutput = True
# Local variables
sXColName = "Easting"
sYColName = "Northing"
sWorksheetName = "SOB$"
sProjection = "PROJCS['NAD_1983_UTM_Zone_10N',GEOGCS['GCS_North_American_1983',DATUM['D_North_American_1983',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['false_easting',500000.0],PARAMETER['false_northing',0.0],PARAMETER['central_meridian',-123.0],PARAMETER['scale_factor',0.9996],PARAMETER['latitude_of_origin',0.0],UNIT['Meter',1.0]];-5120900 -9998100 10000;-100000 10000;-100000 10000;0.001;0.001;0.001;IsHighPrecision"
sXLSMapping = "Freq \"Freq\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Freq,-1,-1;Date \"Date\" true true false 8 Date 0 0 ,First,#,SOB$_Features,Date,-1,-1;Time \"Time\" true true false 255 Text 0 0 ,First,#,SOB$_Features,Time,-1,-1;TTF \"TTF\" true true false 8 Double 6 15 ,First,#,SOB$_Features,TTF,-1,-1;Northing \"Northing\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Northing,-1,-1;Easting \"Easting\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Easting,-1,-1;Zone \"Zone\" true true false 255 Text 0 0 ,First,#,SOB$_Features,Zone,-1,-1;Altitude \"Altitude\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Altitude,-1,-1;Maxsnr \"Maxsnr\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Maxsnr,-1,-1;Hdop \"Hdop\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Hdop,-1,-1;Vdop \"Vdop\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Vdop,-1,-1;Satt \"Satt\" true true false 8 Double 6 15 ,First,#,SOB$_Features,Satt,-1,-1;Fix \"Fix\" true true false 255 Text 0 0 ,First,#,SOB$_Features,Fix,-1,-1;V1 \"V1\" true true false 255 Text 0 0 ,First,#,SOB$_Features,V1,-1,-1;V2 \"V2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,V2,-1,-1;T1 \"T1\" true true false 8 Double 6 15 ,First,#,SOB$_Features,T1,-1,-1;T2 \"T2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,T2,-1,-1;H1 \"H1\" true true false 255 Text 0 0 ,First,#,SOB$_Features,H1,-1,-1;H2 \"H2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,H2,-1,-1;S1 \"S1\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S1,-1,-1;S2 \"S2\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S2,-1,-1;S3 \"S3\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S3,-1,-1;S4 \"S4\" true true false 255 Text 0 0 ,First,#,SOB$_Features,S4,-1,-1"
sMasterGDB = "C:\\Temp\\MuleDeer\\AllKLM5.gdb"
# List all files in folder then list all tables in file
fileList = arcpy.ListFiles("*.xlsx")
print 'Listing .xlsx files in workspace'
try:
# Loop through each file
for fileT in fileList:
sFileName = os.path.splitext(fileT)[0]
sDestXY = sFileName + "XY"
sDestFC = sFileName + "FC"
sSrc = fileT + "\\" + sWorksheetName
print fileT + " : " + sFileName + " : " + sSrc
# out with the old (if any)
if arcpy.Exists(sDestXY):
arcpy.Delete_management(sDestXY)
# out with the old (if any)
if arcpy.Exists(sDestFC):
arcpy.Delete_management(sDestFC)
if arcpy.Exists(sMasterGDB):
print 'Reality check: ' + sMasterGDB + " is there"
# Toolbox / Data mgt / Layers and Table views"
arcpy.MakeXYEventLayer_management(sSrc, sXColName, sYColName, sDestXY, sProjection, "")
# Reality check
if arcpy.Exists(sDestXY):
print sDestXY + " is there "
print "About to call FeatureClassToFeatureClass_conversion()"
# Toolbox / Conversion / To Geodatabase
arcpy.FeatureClassToFeatureClass_conversion(sDestXY, sMasterGDB, sDestFC, "", sXLSMapping, "")
del sXColName, sYColName, sWorksheetName, sProjection, sXLSMapping, sMasterGDB
del fileT, sFileName, sDestXY, sDestFC, sSrc
except:
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
pymsg = "PYTHON ERRORS:\nTraceback Info:\n" + tbinfo + "\nError Info:\n " + str(sys.exc_type) + ": " + str(sys.exc_value) + "\n"
msgs = "ARCPY ERRORS:\n" + arcpy.GetMessages(2) + "\n"
arcpy.AddError(msgs)
arcpy.AddError(pymsg)
print msgs
print pymsg
arcpy.AddMessage(arcpy.GetMessages(1))
print arcpy.GetMessages(1)
x12xy
represents. Is it an Excel table? An XY Event theme? If it is simply an excel table, that might be part of the problem. Please post the entire script, and also the error text if you can. At first glance, "X12XY" definitely needs a file extension of some sort, as it cannot just be sitting in theMuleDeer
directory as is. ArcGIS has no way to identify the file type.