#1 Mon 10 July 2017 12:58
- Cec_78
- Participant actif
- Lieu: Fontenay-le-Fleury (78)
- Date d'inscription: 10 Feb 2013
- Messages: 56
QGIS 2.14: Aide pour script
Bonjour,
Je vais commencer ma question en précisant que je n'ai jamais élaboré de script pour QGIS.
Voici ma problématique:
Dans le cadre d'un SIG ouvert sur le web, dont les données sont contenues dans une base de données PostGIS et sont amenées à être régulièrement mises à jour, dont le serveur cartographique est QGIS server 2.14, je souhaiterais savoir si les manips suivantes dans la constitution du projet QGIS peuvent être facilement automatisées via un script Python et si oui comment faire.
Dans QGIS Desktop, pour créer mon projet, j'appelle une vue Postgis (qui se met à jour lorsque les tables dont elle est issue sont mises à jour).
Cette vue représente des points hôpitaux, avec comme attributs le nombre de publications scientifiques et la spécialité. Il y a un point par couple hôpital spécialité. Je souhaite produire une carte avec une représentation des points en symboles gradués en fonction du nombre de publication. Une couche par spécialité (voir un exemple de ce qui est attendu en PJ).
Je souhaite un script qui automatise la création d'une couche par spécialité avec le même style appliqué aux points (style que j'ai enregistré dans un répertoire) car:
- les données étant dynamiques, les spécialités et leur nombre changent
- Il y a, avec les données actuelles, un quarantaine de spécialités et je ne veux pas tout faire à la main.
En gros, les étapes sont:
- Appeler la vue PostGIS
- Filtrer sur la 1ère spécialité rencontrée et appliquer le style pré-enregistré
- renommer la couche du nom de la spécialité
Cela crée la 1ère couche
- Réimporter la vue ou dupliquer la 1ère couche
- Filtrer sur la 2ème spécialité rencontrée et appliquer le style pré-enregistré
- renommer la couche du nom de la spécialité
Cela crée la 2ème couche
- et ainsi de suite jusqu'à la dernière spécialité.
J'imagine qu'il doit falloir passer par une sorte de boucle mais je suis incapable de mettre en pratique mes maigres connaissances en Python sur ce cas d'application.
Je vous remercie donc par avance pour votre aide et vos conseils.
Céc.
Dernière modification par Cec_78 (Mon 10 July 2017 13:08)
Hors ligne
#2 Tue 11 July 2017 11:39
- Cec_78
- Participant actif
- Lieu: Fontenay-le-Fleury (78)
- Date d'inscription: 10 Feb 2013
- Messages: 56
Re: QGIS 2.14: Aide pour script
Bonjour, bonjour,
Je vois que du monde a regardé mon post :-)
Un petit début d'aide?
Céc.
Hors ligne
#3 Tue 11 July 2017 11:54
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 266
Re: QGIS 2.14: Aide pour script
Bonjour,
Pour ajouter une couche de postgis dans QGIS (changer les paramètre pour correspondre a votre cas...):
Code:
sql = "put here your_filter" uri = QgsDataSourceURI() uri.setConnection("host", "port", "database", "username", "password") uri.setDataSource("schema", "table_name", "geom_column", sql, "primary_key_column") vlayer = QgsVectorLayer(uri.uri(), "layer_name", "postgres") QgsMapLayerRegistry.instance().addMapLayer(vlayer)
pour charger un style sur une couche le mieux (à mon avis) est d'avoir un .qml quelque part qui contient le style désiré et de l'affecter à la couche en la chargeant:
Code:
layer.loadNamedStyle(chemin_vers_le_qml)
en intégrant ces deux bouts de code dans une boucle vous devriez vous en sortir.
Si vous ne connaissez pas python, il faut commencer par l'apprendre, sinon ça va être compliqué...
Hors ligne
#4 Tue 11 July 2017 12:10
- Cec_78
- Participant actif
- Lieu: Fontenay-le-Fleury (78)
- Date d'inscription: 10 Feb 2013
- Messages: 56
Re: QGIS 2.14: Aide pour script
OK, merci pour ce bon début!
Hors ligne