#1 Mon 01 January 2024 07:57
- mila
- Juste Inscrit !
- Date d'inscription: 30 Dec 2023
- Messages: 5
QGIS: SOS code python ?
Bonjour la communauté,
Je dois rendre un code PyGis avec comme consigne d'utiliser des données provenant d'API et d'obtenir des couches SHP ou GPK en sortie. Seulement, je n'ai que très peu codé sur Python et je suis en grande difficulté.
Je voudrais tout simplement afficher et enregistrer comme couche QGis une carte des communes françaises à partir de l'API "https://geo.api.gouv.fr/communes", et y joindre les données de l'Atlas des Zones Inondables de l'API "https://www.georisques.gouv.fr/api/v1/gaspar/azi" pour savoir quelles communes sont classées en zones inondables. Le projet ne me semble pas trop ambitieux...
Voici le début de mon code :
#Bibliothèque
import requests
from qgis.core import QgsVectorLayer, QgsField, QgsFeature, QgsGeometry, QgsPointXY, QgsProject
from PyQt5.QtCore import QVariant
# Importer l'API communes
com_url = "https://geo.api.gouv.fr/communes"
com = requests.get(com_url)
com_data = com.json()
# Importer l'API AZI
azi_url = "https://www.georisques.gouv.fr/api/v1/gaspar/azi"
azi = requests.get(azi_url)
azi_data = azi.json()
Jusqu'ici, il me semble avoir bien importé les API. Mais alors qu'il s'agit d'afficher comme couche, plus rien ne fonctionne...
Lorsque j'ajoute ces trois lignes, une couche temporaire "Communes" apparaît dans les couches mais rien ne s'affiche et la table attributaire est complètement vide.
"layer_name = "Communes"
layer = QgsVectorLayer("Polygon?crs=epsg:4326", layer_name, "memory")
QgsProject.instance().addMapLayer(layer)
Voilà, je ne m'en sors pas..
Toute aide serait la bienvenue !
Hors ligne
#2 Tue 02 January 2024 16:41
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
Re: QGIS: SOS code python ?
Bonjour,
Le début est juste , vous faite un appel à chacune des APIs. La requête reçoit un json en réponse pour chacune, il faut cependant encore parser les données vers une couche QGIS.
Code:
créer une liste vide appelée "entités" pour chaque "commune" dans com_data faire : créer une géométrie à partir des coordonnées WKT de "commune["geometry"]["coordinates"]" créer une nouvelle entité de la couche appelée "feature" définir la géométrie de "feature" comme étant la géométrie créée définir les attributs de "feature" comme étant : - "commune["properties"]["nom"]" pour le nom - "commune["properties"]["code"]" pour le code postal - "commune["properties"]["population"]" pour la population ajouter "feature" à la liste "entités" ajouter toutes les entités de la liste "entités" à la couche "layer_data"
Dernière modification par neskuik01 (Tue 02 January 2024 17:35)
Hors ligne