首页 > 解决方案 > Geopandas 读取 gdb 层名称以在 for 循环中进行对象

问题描述

我有一个图层列表,我想将它们导入 geopandas 并使其对象名称与图层名称相同。

在这种情况下layer = gpd.read_file(...),应该是图层列表中实际图层的名称。

layerlist = fiona.listlayers(gdb)

for layer in layerlist:
    layer = gpd.read_file(gdb, driver="FileGDB", layer=layer)

实现我想要的手动方法是:

roads = gpd.read_file(gdb, driver="FileGDB", layer='roads')
trees = gpd.read_file(gdb, driver="FileGDB", layer='trees')
signs= gpd.read_file(gdb, driver="FileGDB", layer='signs')
...

但我宁愿遍历图层,这样我就不需要先查看图层名称。

标签: python-3.xgeopandas

解决方案


在 Python 中这不是一件容易的事,无论如何我都建议不要这样做。您可以使用具有与图层名称相同的键的字典。

layers = {}

layerlist = fiona.listlayers(gdb)

for layer in layerlist:
    layers[layer] = gpd.read_file(gdb, driver="FileGDB", layer=layer)

然后,您可以从 dict 轻松访问它们中的每一个。

layers['roads']

推荐阅读