arcpy get database path of feature class in feature dataset
Asked Answered
C

2

7

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.

Claire answered 22/3, 2015 at 6:24 Comment(0)
L
9

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)
Lubricity answered 22/3, 2015 at 15:57 Comment(2)
Thanks very much. This helped a great deal. I managed to get something working through some try and except checking the workspaceType or datasetType == "FeatureDataset", but this is definitely a cleaner way to do it.Claire
Also see gis.stackexchange.com/questions/112288/… for handling Feature Datasets in pathLesley
L
6

Another way which is not obvious from the documentation is to use the path (Read Only) property:

Describe object properties

import arcpy
desc = arcpy.Describe(r"C:\GISData\Data.gdb\Erf")
print desc.path

# prints: u"C:\\GISData\\Data.gdb"
Languor answered 28/4, 2016 at 5:23 Comment(2)
(I assumed you were using arcpy)Languor
This does not get around the problem of feature datasets within a geodatabase as they are reported by path. It is only a substitute for the os.path.dirname function.Proser

© 2022 - 2024 — McMap. All rights reserved.