4

Is there a way to check if a feature class full path string is a path to a feature class within a file geodatabase feature dataset in arcpy?

For example:

C:\test\test.gdb\testdataset\featureclass

I'd like to return testdataset.

I can't find it in any of the applicable Describe objects. I can do it with string manipulation...

fullpath = r"C:\test\test.gdb\testdataset\featureclass"
pathlen = len(fullpath.split (".gdb")[0]) + 4
namelen = len(fullpath.split ("\\")[-1])
dataset = fullpath[pathlen:-namelen].replace ("\\", "")

This seems like too much code though.

Is there a better way?

0

2 Answers 2

6

Maybe this:

>>> #testfc is a fc within a fd, as shown with this catalogPath statement:
>>> desc = arcpy.Describe('testfc')
>>> desc.catalogPath
    u'C:\\Users\\whitley-wayne\\Desktop\\data.gdb\\dataset1\\testfc'
>>>
>>> #this shows how to essentially use the Describe method twice to get the fd name:
>>> desc = arcpy.Describe(fc)
>>> if hasattr(desc, 'path'):
...     descPth = arcpy.Describe(desc.path)
...     if hasattr(descPth, 'dataType'):
...         if descPth.dataType == 'FeatureDataset': 
...             print 'the feature dataset name: {0}'.format(descPth.name)
...             
    the feature dataset name: dataset1
>>> 
6

Use Describe on the feature class parent directory.

if arcpy.Describe(os.path.dirname(path_to_featureclass)).dataType == 'FeatureDataset': 
    do something...
else:
    do something else...

If you don't have the path already, you can get it with the catalogPath property:

arcpy.Describe(featureclass).catalogPath

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.