0

I made the following script to merge shape files of different format types (poly,line, points):

def main(): 
 import arcpy
 from arcpy import env
 import globalpath
 import os
 env.workspace = globalpath.toolDataPath
 dataPath=globalpath.toolDataPath
 arcpy.env.overwriteOutput = True
 #try:
 DataTypeL=[("Polygon","mergedTOTPoly.shp"),("Polyline","mergedTOTLines.shp"),("Point","MergedTOTPoint.shp")]
 for dType in DataTypeL:
 (Typei,Title)=dType
 matches = []
 counter=0
 for dirpath, dirnames, filenames in arcpy.da.Walk(dataPath+"\\UtilityDataFromZorgel",datatype="FeatureClass",type=Typei):
 for filename in filenames: 
 match = ( os.path.join(dirpath, filename))
 arcpy.AddMessage(m)
 matches.append (match)
 counter = counter + 1 
 arcpy.Merge_management(matches, dataPath+"\\utilities"+Title)
 arcpy.AddMessage(str(counter)+" "+str(Typei)+" layers were merged into "+ str(filename))
 #except:
 arcpy.AddWarning("Merging Utility Layers Failed")
if __name__ == "__main__":
 main()

I get the following error:

Traceback (most recent call last):
 File "C:\merger.py", line 30, in <module>
 main()
 File "C:\merger.py", line 25, in main
 arcpy.Merge_management(matches, dataPath+"\\utilities"+Title)
 File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\management.py", line 3762, in Merge
 raise e
ExecuteError: ERROR 001156: Failed on input OID 0, could not write value 'Kanata' to output field TILE_ID
Failed to execute (Merge).

When I merge these files manually from arcmap it works, and fields are mapped as follows:

"STRUCT_TYP \"STRUCT_TYP\" true true false 18 Text 0 0 ,First,#,Allstream_hdwr_L,STRUCT_TYP,-1,-1,allstream_L,STRUCT_TYP,-1,-1,Allstream_lines_L,STRUCT_TYP,-1,-1,Allstream_text_L,STRUCT_TYP,-1,-1,Atria_lines_L,STRUCT_TYP,-1,-1,Atria_text_L,STRUCT_TYP,-1,-1,bell_L,STRUCT_TYP,-1,-1)

where STRUCT_TYP is a shared field.

please let me know how can I get around this error, and if it is indeed mapping the fields how can I do it in batched merging, or should I merge each file individually?

asked May 19, 2015 at 18:47
1

1 Answer 1

2

I got it to run on a directory full of parcels, PLSS, and annexations. The directory had a mix of shapefiles and file geodatabases. I defined the datapath differently, but otherwise changed nothing.

It failed on the 13th polygon feature class. The resulting shapefile had 62 fields and 44525 records. My failure was a type mismatch, so it was different than yours.

Try running on a subset of your input feature classes and add some print commands to tell you which feature class failed. You may have a field name or file name that is invalid in arcpy, but works when the feature class is inserted as a layer in ArcMap.

answered May 19, 2015 at 20:18
7
  • I'll try that and post what I find Commented May 20, 2015 at 11:55
  • and why did you get a type mismatch at that point I'm curious Commented May 20, 2015 at 12:00
  • adding error handlers shows that only polygons are giving me errors, i removed some of the shape files to see if the issue persists it appears that "TILE_ID" is a problematic field as the problem appears with different values other than "Kanata" Commented May 20, 2015 at 13:12
  • Is the "TILE_ID" field the same length (in characters) in all of your source files? If not, then rename one of your files with a wider "TILE_ID" field so that it is processed first. Commented May 20, 2015 at 15:36
  • no it's not the same length, I could have swore its about text length, i was trying to recalculate the value for "TILE_ID" as str(!TILE_ID!)[:4] Commented May 20, 2015 at 15:38

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.