Suite

Gestion de KML/CSV avec geopandas - DriverError : pilote non pris en charge : u'CSV'


J'essaie d'importer un ensemble de données de districts de codes postaux britanniques.

Le problème est que les géopandas ne semblent pas aimer non plus la version CSV/KML des données.

Si j'utilise la commande geopandas.from_file(path) alors je reçois l'erreur :

DriverError : pilote non pris en charge : u'CSV'

J'ai la même erreur lorsque j'essaie d'importer une version KML des données (vous pouvez télécharger les données ci-dessous).

Je suis sûr que c'est trivial, mais quelqu'un peut-il comprendre ce que je fais mal?

Districts de code postal au Royaume-Uni - KML

Districts de code postal au Royaume-Uni - CSV


en cas de csv, il serait probablement plus facile de le lire avec des pandas, puis de le convertir en geopandas Dataframe

importer des pandas en tant que pd importer des géopandas en tant que gp de shapely.geometry importer des points stations = pd.read_csv('… /data/stations.csv') stations['geometry'] = stations.apply(lambda z: Point(zX, zY) , axe=1) stations = gp.GeoDataFrame(stations)

Le pilote KML n'est pas activé par défaut comme détaillé dans ce problème github https://github.com/Toblerity/Fiona/issues/97. Fondamentalement, le pilote KML ne semble pas répondre aux exigences de qualité de Fiona (à partir de 2014), je ne sais pas s'il sera corrigé à l'avenir.

Vous pourriez essayer pour lire un KML simple/assez standard comme suit :

importer des géopandas en tant que gpd fiona.drvsupport.supported_drivers['kml'] = 'rw' # activer le support KML qui est désactivé par défaut fiona.drvsupport.supported_drivers['KML'] = 'rw' # activer le support KML qui est désactivé par défaut gpd.read_file("/chemin/vers/votre/test.kml")

J'ai essayé de lire un fichier ici et cela m'a donné le résultat suivant :

Crédits à cet essentiel :

https://gist.github.com/timtroendle/6f61dc38a0aad58c2261524d7d8594c3

Modifier 20191021 : Avec les nouvelles versions defiona, vous devrez peut-être utiliserlibkmlà la place dekml. C'est à dire.:

fiona.drvsupport.supported_drivers['libkml'] = 'rw' # activer le support KML qui est désactivé par défaut fiona.drvsupport.supported_drivers['LIBKML'] = 'rw' # activer le support KML qui est désactivé par défaut

GeoPandas s'appuie sur la bibliothèque Fiona (http://github.com/toblerity/Fiona) pour lafrom_file()la mise en oeuvre. À l'heure actuelle, Fiona, et donc GeoPandas, ne prend pas en charge les entrées CSV ou KML. Si vous pouvez les convertir en GeoJSON ou en Shapefiles, alors GeoPandas devrait pouvoir les lire sans problème.


La version actuelle de Fiona prend en charge le pilote CSV prêt à l'emploi. Vous devrez peut-être spécifier les noms des colonnes de latitude et de longitude comme ceci :

geopandas.read_file("file.csv", X_POSSIBLE_NAMES="X", Y_POSSIBLE_NAMES="Y")

Vous trouverez plus d'informations sur les arguments possibles pour le pilote csv dans la documentation du pilote gdal : https://gdal.org/drivers/vector/csv.html#open-options