J'utilise GDAL en Python pour importer des fichiers de formes. Je veux connaître les noms de champs pour le fichier, ma façon actuelle est:
fields = []
for i in range(1, layer.GetFeature(0).GetFieldCount()):
field = layer.GetFeature(0).GetDefnRef().GetFieldDefn(i).GetName()
fields.append(field)
Mais de cette façon, j'obtiens la fonctionnalité pour la première couche. Cela signifie-t-il qu'il est possible que différentes couches puissent avoir des caractéristiques différentes?
Sinon, est-il possible d'obtenir les noms de champs à la fois, au lieu d'entrer dans cette profondeur? Si oui, existe-t-il un moyen plus simple d'obtenir les noms des champs?
Réponses:
1) fichier de formes individuel: comme dans le commentaire, un fichier de formes n'a qu'un seul calque. Si vous ne voulez que les noms des champs
Vous pouvez utiliser le format GeoJSON avec un générateur Python ( ogr_geointerface.py )
Cela introduit Fiona (un autre wrapper Python d'OGR, Python 2.7.x et 3.x). Tous les résultats sont des dictionnaires Python (format GeoJSON).
Et GeoPandas (Fiona + pandas , Python 2.7.x et 3.x). Le résultat est un Pandas DataFrame (= GeoDataFrame).
2) Fichiers de formes multiples: si vous souhaitez parcourir plusieurs fichiers de formes dans un dossier
Avec osgeo.ogr
ou avec un générateur
Avec Fiona
la source
Utilisation:
la source