import os
from osgeo import ogr

# 设置 GDB 文件夹路径
gdb_path = 'D:\\gisdata\\三亚\\海域数据和三区三线数据\\三亚三线数据.gdb'  # 设置为你的 .gdb 文件夹路径

# 打开 GDB 文件夹(通过 ogr 驱动)
driver = ogr.GetDriverByName('OpenFileGDB')
if not driver:
    raise Exception("OpenFileGDB 驱动不可用")

# 打开 GDB 文件夹
gdb = driver.Open(gdb_path, 0)  # 0 表示只读模式

if not gdb:
    raise Exception(f"无法打开 {gdb_path} 文件夹")

# 获取所有图层(要素类)
layer_count = gdb.GetLayerCount()
print(f"该 GDB 文件夹包含 {layer_count} 个图层:")

# 遍历每个图层并输出图层名称
for i in range(layer_count):
    layer = gdb.GetLayerByIndex(i)
    print(f"图层 {i}: {layer.GetName()}")

# 读取第一个图层(你可以选择其他图层)
layer_name = gdb.GetLayerByIndex(0).GetName()
print(f"加载图层: {layer_name}")

# 获取图层数据
layer = gdb.GetLayerByName(layer_name)
for feature in layer:
    # 获取每个要素的几何形状
    geom = feature.GetGeometryRef()
    print(f"要素几何: {geom.ExportToWkt()}")
    # 获取每个要素的字段值
    for field in feature.items():
        print(f"{field}: {feature.GetField(field)}")

# 关闭 GDB 文件夹
gdb = None