Ich benutze GDAL in Python zum Importieren von Shapefile. Ich möchte die Feldnamen für die Datei kennen. Mein aktueller Weg ist:
fields = []
for i in range(1, layer.GetFeature(0).GetFieldCount()):
field = layer.GetFeature(0).GetDefnRef().GetFieldDefn(i).GetName()
fields.append(field)
Auf diese Weise erhalte ich jedoch das Feature für die erste Ebene. Bedeutet das, dass verschiedene Ebenen unterschiedliche Merkmale haben können?
Wenn nicht, ist es möglich, die Feldnamen sofort abzurufen, anstatt in diese Tiefe zu gelangen? Wenn ja, gibt es eine einfachere Möglichkeit, die Feldnamen zu ermitteln?
Antworten:
1) individuelles Shapefile: Wie im Kommentar hat ein Shapefile nur eine Ebene. Wenn Sie nur die Namen der Felder wollen
Sie können das GeoJSON-Format mit einem Python-Generator ( ogr_geointerface.py ) verwenden.
Dies führt Fiona ein (ein weiterer Python-Wrapper von OGR, Python 2.7.x und 3.x). Alle Ergebnisse sind Python-Wörterbücher (GeoJSON-Format).
Und GeoPandas (Fiona + Pandas , Python 2.7.x und 3.x). Das Ergebnis ist ein Pandas DataFrame (= GeoDataFrame).
2) Mehrere Shapefiles: Wenn Sie mehrere Shapefiles in einem Ordner durchlaufen möchten
Mit osgeo.ogr
oder mit einem Generator
Mit Fiona
quelle
Verwenden:
quelle