Я использую GDAL в Python для импорта шейп-файла. Я хочу знать имена полей для файла, мой текущий способ:
fields = []
for i in range(1, layer.GetFeature(0).GetFieldCount()):
field = layer.GetFeature(0).GetDefnRef().GetFieldDefn(i).GetName()
fields.append(field)
Но так я получаю функцию для первого слоя. Означает ли это, что разные слои могут иметь разные особенности?
Если нет, то можно ли получить имена полей сразу, вместо того, чтобы углубляться в эту глубину? Если да, есть ли более простой способ получить имена полей?
Ответы:
1) индивидуальный шейп-файл: как в комментарии, шейп-файл имеет только один слой. Если вы хотите только имена полей
Вы можете использовать формат GeoJSON с генератором Python ( ogr_geointerface.py )
Это знакомство с Fiona (еще одна оболочка Python для OGR, Python 2.7.x и 3.x). Все результаты являются словарями Python (формат GeoJSON).
И GeoPandas (Fiona + pandas , Python 2.7.x и 3.x). Результатом является Pandas DataFrame (= GeoDataFrame).
2) Несколько шейп-файлов: если вы хотите перебрать несколько шейп-файлов в папке
С osgeo.ogr
или с генератором
С фионой
источник
Использование:
источник