我正在尝试获取可能在或可能不在要素数据集中的要素类的数据库路径。我正在使用要素类的 os.path.dirname。如果要素类不在要素数据集中(很好),这将为我提供数据库路径,但如果要素类在要素数据集中,它将为我提供要素数据集的路径。

这可以是文件、个人或 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)
    

    10-07 16:02