Saya menggunakan GDAL dengan Python untuk mengimpor shapefile. Saya ingin tahu nama bidang untuk file, cara saya saat ini adalah:
fields = []
for i in range(1, layer.GetFeature(0).GetFieldCount()):
field = layer.GetFeature(0).GetDefnRef().GetFieldDefn(i).GetName()
fields.append(field)
Tapi dengan cara ini, saya mendapatkan fitur untuk lapisan pertama. Apakah ini berarti lapisan yang berbeda dapat memiliki fitur yang berbeda?
Jika tidak, apakah mungkin untuk mendapatkan nama field sekaligus, daripada masuk ke kedalaman ini? Jika ya, apakah ada cara yang lebih mudah untuk mendapatkan nama bidang?
Jawaban:
1) shapefile individu: seperti dalam komentar, sebuah shapefile hanya memiliki satu lapisan. Jika Anda hanya menginginkan nama-nama bidang
Anda dapat menggunakan format GeoJSON dengan generator Python ( ogr_geointerface.py )
Ini memperkenalkan Fiona (pembungkus Python lain dari OGR, Python 2.7.x dan 3.x). Semua hasil adalah kamus Python (format GeoJSON).
Dan GeoPandas (Fiona + panda , Python 2.7.x dan 3.x). Hasilnya adalah Pandas DataFrame (= GeoDataFrame).
2) Multiple shapefile: jika Anda ingin beralih melalui beberapa shapefile dalam folder
Dengan osgeo.ogr
atau dengan generator
Dengan Fiona
sumber
Menggunakan:
sumber