banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Tue 20 December 2022 16:15

Félix GABRION
Juste Inscrit !
Date d'inscription: 20 Dec 2022
Messages: 2

QGIS/PyQGIS: Chargement couche en geojson ou json

Bonjour,

Je cherche à utiliser les données opendata des réseaux électriques et gaz qui sont des fichiers json ou geojson ou csv de 2 à 3 Go. Pour cela, pas question de les charger entièrement sur la carte. J'aimerais les charger sur Qgis à l'aide de l'API Python, les filtrer selon une couche polygone qui délimite les emprises de mon projet et ensuite afficher seulement les entités qui intersectent le projet.
La partie intersection n'est plus un problème, là où je bloque maintenant c'est tout simplement le chargement des couches json et geojson!
Pour un shp je les charger de la manière suivantes:

Code:

vlayer = QgsVectorLayer("testdata/airports.shp", "layer_name_you_like", "ogr")

Cela marche super pour un shapefile mais ça ne marche pas pour un geojson/json.
J'ai trouvé cette manière de faire pour un geojson:

Code:

iface.addVectorLayer('chemin/fichier.geojson', 'nom du fichier', 'ogr')

Encore une fois, c'est un échec, la couche n'est pas valide.

J'aimerais savoir si il existe un moyen de charger les fichiers geojson ou json dans une couche vectorielle QgsVectorLayer ?

Merci pour votre aide et bonne journée,

Hors ligne

 

#2 Fri 23 December 2022 09:19

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 266

Re: QGIS/PyQGIS: Chargement couche en geojson ou json

Bonjour,

Votre méthode semble correcte.
Est ce que vous parvenez à charger le fichier à la main dans QGIS?
Quelle version de QGIS utilisez vous?

Hors ligne

 

#3 Wed 28 December 2022 08:58

antonio.andrade
Participant occasionnel
Date d'inscription: 9 Feb 2021
Messages: 17

Re: QGIS/PyQGIS: Chargement couche en geojson ou json

Bonjour,

Vous avez bien identifié les deux méthodes pour charger dans QGIS des données vectorielles, dans votre cas au format GeoJSON. L'anomalie peut avoir deux origines :
- le fichier GeoJSON est mal formaté. Comme suggéré par YoLecomte, vous devez vérifier la qualité des données en chargeant un petit extrait dans QGIS.
- le fichier GeoJSON est trop volumineux pour être chargé en mémoire dans QGIS. Vous pouvez alors :
    * utiliser la librairie gdal sans passer par QGIS (idéalement, dans un script exécuté en dehors de QGIS) La fonction ogr2ogr de cette librairie permet d'extraire un sous-ensemble des données du fichier GeoJSON et d'enregistrer le résultat dans un format de fichier plus performant sous QGIS (geopackage, shapefile, ...) Cette fonction peut être exécutée en ligne de commande ou dans un script python (cf. https://gdal.org/drivers/vector/geojson.html et https://gdal.org/api/python_bindings.html)
    * charger votre fichier GeoJSON dans une base de données géographiques (Spatialite, Postgres/Postgis, ...) Les bases de données sont conçues  pour gérer et traiter des volumes importants de données. En particulier, l'indexation spatiale des données permet d'optimiser l'accès aux données et l'utilisation de la mémoire disponible. Le chargement des données GeoJSON dans une base de données peut être réalisé en utilisant la fonction ogr2ogr en ligne de commande ou dans un script python.

En standard, QGIS ne permet pas de charger un fichier JSON ne respectant pas le standard GeoJSON (cf. https://fr.wikipedia.org/wiki/GeoJSON). Il faut ainsi développer un script pour convertir vos données JSON dans un format reconnu par QGIS (csv, txt, ...)

Antonio

Hors ligne

 

Pied de page des forums

Powered by FluxBB