arcpy 获取要素数据集中要素 class 的数据库路径
arcpy get database path of feature class in feature dataset
我正在尝试获取可能在也可能不在要素数据集中的要素 class 的数据库路径。我正在使用功能 class 的 os.path.dirname
。如果特征 class 不在特征数据集中(很好),这将给我数据库路径,但如果特征 class 在特征数据集中,它将给我特征的路径数据集。
这可以是文件、个人或 sde 地理数据库。我正在考虑使用“.sde”的 split
,但如果它是不同类型的地理数据库,那将不起作用。
路径示例可以是:
- 对于要素数据集内部:C:\GISData\Data.gdb\Property\Erf
- 在 gdb 根目录下:C:\GISData\Data.gdb\Erf
在这两种情况下,我都想得到 C:\GISData\Data.gdb.
谢谢。
看看这个短片blog posting,他们使用了以下功能:
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)
文档中不明显的另一种方法是使用路径(只读)属性:
import arcpy
desc = arcpy.Describe(r"C:\GISData\Data.gdb\Erf")
print desc.path
# prints: u"C:\GISData\Data.gdb"
我正在尝试获取可能在也可能不在要素数据集中的要素 class 的数据库路径。我正在使用功能 class 的 os.path.dirname
。如果特征 class 不在特征数据集中(很好),这将给我数据库路径,但如果特征 class 在特征数据集中,它将给我特征的路径数据集。
这可以是文件、个人或 sde 地理数据库。我正在考虑使用“.sde”的 split
,但如果它是不同类型的地理数据库,那将不起作用。
路径示例可以是:
- 对于要素数据集内部:C:\GISData\Data.gdb\Property\Erf
- 在 gdb 根目录下:C:\GISData\Data.gdb\Erf
在这两种情况下,我都想得到 C:\GISData\Data.gdb.
谢谢。
看看这个短片blog posting,他们使用了以下功能:
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)
文档中不明显的另一种方法是使用路径(只读)属性:
import arcpy
desc = arcpy.Describe(r"C:\GISData\Data.gdb\Erf")
print desc.path
# prints: u"C:\GISData\Data.gdb"