Używam GDAL w Pythonie do importowania pliku shapefile. Chcę poznać nazwy pól dla pliku, moja obecna droga to:
fields = []
for i in range(1, layer.GetFeature(0).GetFieldCount()):
field = layer.GetFeature(0).GetDefnRef().GetFieldDefn(i).GetName()
fields.append(field)
Ale w ten sposób otrzymuję funkcję dla pierwszej warstwy. Czy to znaczy, że różne warstwy mogą mieć różne funkcje?
Jeśli nie, to czy można uzyskać nazwy pól od razu, zamiast wchodzić w tak głębokie? Jeśli tak, czy istnieje łatwiejszy sposób na uzyskanie nazw pól?
Odpowiedzi:
1) indywidualny plik kształtów: jak w komentarzu, plik kształtów ma tylko jedną warstwę. Jeśli chcesz tylko nazwy pól
Możesz użyć formatu GeoJSON z generatorem Pythona ( ogr_geointerface.py )
Wprowadza to Fiona (kolejne opakowanie OGR, Python 2.7.xi 3.x). Wszystkie wyniki są słownikami w języku Python (format GeoJSON).
I GeoPandas (Fiona + pandy , Python 2.7.x i 3.x). Wynikiem jest Pandas DataFrame (= GeoDataFrame).
2) Wiele plików kształtów: jeśli chcesz iterować przez wiele plików kształtów w folderze
Z osgeo.ogr
lub z generatorem
Z Fioną
źródło
Posługiwać się:
źródło