I have a script which I'm trying to implement to re-define the projections of all datasets in a directory and its subdirectories. I'm using the define projection tool from data management to do this. Unfortunately, when I run the script, I'm getting an error:
If I try to define the projection in one of these datasets directly through ArcToolbox, I get the following warning:
My guess is that I need to write some error handling into the script in order to dismiss this warning, but I can't find anything anywhere that explains clearly how I might implement this. Anyone have any ideas? Feedback is greatly appreciated!
My code so far:
import os import arcpy from arcpy import env arcpy.env.overwriteOutput = True workspace = r"C:\Scripts\Redefine Projection" newProjection = arcpy.SpatialReference(25832) # wkid for 'ETRS_1989_UTM_Zone_32N' def recursiveProjections(workspace): """ Function iterates through a workspace and its subfolders using arcpy.da.walk and returns a tuple containing two lists: 1) list of spatial reference objects of all geographic datasets (including those inside geodatabases) and 2) a list of filepaths for the geographic datasets. Parameter: target workspace """ describeDatasets =  filesList =  for dirpath, path, filenames in arcpy.da.Walk(workspace): for filename in filenames: desc = arcpy.Describe(os.path.join(dirpath, filename)) describeDatasets.append(desc) for path, path_names, data_names in arcpy.da.Walk(workspace): for data_name in data_names: filesList.append(os.path.join(path, data_name)) return describeDatasets, filesList def defineProjection(workspace): """ Function redefines the existing projection for datasets in a workspace. A log file is created listing the paths of all redefined datasets. Parameter: workspace """ # unpack tuple returned by def recursiveProjections into two lists descriptions, filenames = recursiveProjections(workspace) # iterate through features and redefine their projections correctly for feature in descriptions: arcpy.DefineProjection_management(feature, newProjection) def main(): defineProjection(workspace) if __name__ == '__main__': main()