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:
In both these cases I would like to get C:\GISData\Data.gdb.
Thank you.
A feature dataset is a collection of related feature classes that share a common coordinate system. Feature datasets are used to spatially or thematically integrate related feature classes.
All feature classes in a feature dataset must share a common coordinate system, and the x,y coordinates of their features should fall within a common spatial extent.
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)
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"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With