Filter Out Annotaion Feature Class Using arcpy.da.Walk():?

711
2
Jump to solution
10-21-2013 08:47 AM
MikeMacRae
Occasional Contributor III
Is there anyways to use:

for dirpath, dirnames, filenames in arcpy.da.Walk():


to filter out annotation feature classes?

the help menu doesn't specify them as a type, which is strange because using the 'Describe' function to describe featuretype on 'FeatureClass', you can filter out annotation:

http://resources.arcgis.com/en/help/main/10.1/index.html#//018v00000011000000

I'm hoping to walk through a geodatabase and grab everything but the annotation FC's.

Mike
Tags (2)
0 Kudos
1 Solution

Accepted Solutions
JasonScheirer
Occasional Contributor III
I don't think it's directly supported, but you could add a filter function like this:

def filter_function(walk):     for dirname, subdirs, items in walk:         new_items = []         for item in items:             description = arcpy.Describe(os.path.join(dirname, item))             if description.dataType == "FeatureClass":                 if description.featureType != "Annotation":                     new_items.append(item)             else:                 new_items.append(item)         yield dirname, subdirs, new_items  for dirpath, dirnames, filenames in filter_function(arcpy.da.Walk(workspace)):     # Something interesting goes here

View solution in original post

0 Kudos
2 Replies
JasonScheirer
Occasional Contributor III
I don't think it's directly supported, but you could add a filter function like this:

def filter_function(walk):     for dirname, subdirs, items in walk:         new_items = []         for item in items:             description = arcpy.Describe(os.path.join(dirname, item))             if description.dataType == "FeatureClass":                 if description.featureType != "Annotation":                     new_items.append(item)             else:                 new_items.append(item)         yield dirname, subdirs, new_items  for dirpath, dirnames, filenames in filter_function(arcpy.da.Walk(workspace)):     # Something interesting goes here
0 Kudos
MikeMacRae
Occasional Contributor III
I don't think it's directly supported, but you could add a filter function like this:

def filter_function(walk):
    for dirname, subdirs, items in walk:
        new_items = []
        for item in items:
            description = arcpy.Describe(os.path.join(dirname, item))
            if description.dataType == "FeatureClass":
                if description.featureType != "Annotation":
                    new_items.append(item)
            else:
                new_items.append(item)
        yield dirname, subdirs, new_items

for dirpath, dirnames, filenames in filter_function(arcpy.da.Walk(workspace)):
    # Something interesting goes here



Thanks Jason! That works quite well.
0 Kudos