Search code examples
pythondatabasepathdatasetarcpy

arcpy get database path of feature class in feature dataset


I am trying to get the database path of a feature class that may or may not be in a feature dataset. I am using the os.path.dirname of the feature class. This will give me either the database path if the feature class is not in a feature dataset (great), but if the feature class is in a feature dataset, it will give me the path to the feature dataset.

This could be a file, personal or sde geodatabase. I was thinking of a split using the '.sde' but that won't work if it is a different type of geodatabase.

A sample of the path could be:

  • For inside a feature dataset: C:\GISData\Data.gdb\Property\Erf
  • For under the gdb root: C:\GISData\Data.gdb\Erf

In both these cases I would like to get C:\GISData\Data.gdb.

Thank you.


Solution

  • Check out this short blog posting which they use the following function:

    def get_geodatabase_path(input_table):
      '''Return the Geodatabase path from the input table or feature class.
      :param input_table: path to the input table or feature class 
      '''
      workspace = os.path.dirname(input_table)
      if [any(ext) for ext in ('.gdb', '.mdb', '.sde') if ext in os.path.splitext(workspace)]:
        return workspace
      else:
        return os.path.dirname(workspace)