Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • S Sysma-Tickets
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 115
    • Issues 115
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • eptbsn
  • Sysma-Tickets
  • Wiki
  • Manuel
  • V03
  • Documentation administrateurs
  • 3. Sysma et QGis

Last edited by Antoine RIVIERE Mar 06, 2023
Page history

3. Sysma et QGis

  • 3.1 Connecter QGis à Sysma
  • 3.2 Paramétrer un menu QGis avec les couches Sysma
    • 3.2.1 Créer un projet QGIS avec vos couches contenues dans le schema sysma_export_layer.
    • 3.2.2 Installer le plugin QGIS layers menu from project
    • 3.2.3 Ajouter le projet SYSMA dans le menu de configuration du plugin :
  • 3.3 Un peu de SQL
    • 3.3.1 Quelques requêtes simples pour récupérer des données Sysma dans Qgis
    • 3.3.2 Aller plus loin avec le SQL : joindre des couches Sysma à la volée et les afficher dans QGis
  • 3.4 Un exemple concret : générer un Atlas bilan annuel des travaux

3.1 Connecter QGis à Sysma

Il est fortement conseillé d'utiliser une authentification basic à minima.

note pour les strctures mutualisées, vous pouvez vous référer à cette documentation un peu plus complète : https://gitlab.sevre-nantaise.com/mutualisation-sysma/documentation/-/blob/main/Tutoriels/tuto_connexion_sysma_qgis.pdf

Penser à utiliser la même valeur au niveau de l'Id (fenêtre de droite, ici par exemple exsigle) pour l'ensemble des agents de votre structure (les credentials : login et mdp peuvent varier). Cela permet de pouvoir partager des projets QGIS en toutes sécurité car pour chaque couche d'un projet, QGIS va se référer aux informations d'authentification (login + mdp de l'agent) correspondant à l'Id sans partager les credentials.

image

3.2 Paramétrer un menu QGis avec les couches Sysma

3.2.1 Créer un projet QGIS avec vos couches contenues dans le schema sysma_export_layer.

Dans notre exemple ce projet sera nommé SYSMA_COUCHES_EPTBSN et enregistré sur une disque partagé.

note : vous pouvez vous appuyer sur le script python suivant à lancer dans QGIs pour générer automatiquement le projet QGIS https://gitlab.sevre-nantaise.com/eptbsn/sysma-tickets/-/blob/master/QGIS/sysma_export_layer2qgisPrj.py
note : il est possible de stocker le fichier projet dans Postgres cf #165 (comment 4680)

image

3.2.2 Installer le plugin QGIS layers menu from project

image

3.2.3 Ajouter le projet SYSMA dans le menu de configuration du plugin :

image

3.3 Un peu de SQL

  • Notions générales de SQL : https://sql.sh/
  • SQL spatial avec Postgis (tutoriel), lien suivant et autres pages : http://postgis.fr/chrome/site/docs/workshop-foss4g/doc/joins.html
  • Documentation officielle Postgis : https://postgis.net/documentation/

3.3.1 Quelques requêtes simples pour récupérer des données Sysma dans Qgis

Depuis les couches du schema sysma_export_layer (image des données en date de la dernière opération d'export dans sysma)
image

Les couches pg sont requêtables en SQL ou via les filtres de QGIS.

Pour connaitre la date de validité des données dans QGIS / propriété de la couche / Information
image

3.3.2 Aller plus loin avec le SQL : joindre des couches Sysma à la volée et les afficher dans QGis

Cette solution est la plus puissante, elle permet d'accéder aux données 'en live' et de construire des analyses globales.

  • Requête simple pour visualiser les différents valeurs de contrats
-- SELECT colonne1, colonne2 FROM schema.table
SELECT 
   contracts 
FROM sysma.sysma_action;
  • la liste est répétitive -> suppression des doublons lors de l'affichage
-- NOTION : Mot clé DISTINCT
SELECT 
   DISTINCT contracts 
FROM sysma.sysma_action
  • selection des actions rattachées au contrat CT EAU (2021-2026)
-- NOTION : CLAUSE WHERE
SELECT 
 sysma_action_id, sysma_action
 FROM sysma.sysma_action
 WHERE contracts = '{"CT EAU (2021-2026)"}'  -- uniquement les actions rattachées à un seul contrat : CT EAU (2021-2026)
  • pour avoir les actions rattachées au moins à CT EAU (2021-2026)
-- NOTION : CLAUSE WHERE suite ...
 SELECT 
 sysma_action_id, sysma_action
 FROM sysma.sysma_action
 WHERE contracts::TEXT = ilike '%"CT EAU (2021-2026)"%' -- c'est une des façons d’exécuter le filtre en SQL
  • Pour avoir les actions rattachées au moins au contrat CT EAU (2021-2026) et programmées en 2022
-- NOTION : CLAUSE WHERE suite...
 SELECT 
 sysma_action_id, sysma_action
 FROM sysma.sysma_action
 WHERE contracts::TEXT  ilike '%"CT EAU (2021-2026)"%' -- c'est une des façon d'executer le filtre en SQL
 AND program_year = 2021; -- année de programmation
  • Récupération des géométries des objets et affichage de la couche dans QGIS
-- Notions : 
--  # CTE (instruction WITH)
--  # Alias (mot clé AS)
--  # Jointure (Instruction JOIN  .. ON(...))
WITH 
actions as ( -- filtre sur nos actions
 SELECT 
 sysma_action_id, sysma_action, sysma_action_type_id, program_year
 FROM sysma.sysma_action
 WHERE contracts::TEXT  ilike '%"CT EAU (2021-2026)"%' -- c'est une des façon d'executer le filtre en SQL
 AND program_year = 2021
 )
, id_object_lists AS (  -- recuperation de la liste des id_object liés aux actions selectionnées
  SELECT 
     a.sysma_action_id
   , a.sysma_action
   , a.sysma_action_type_id
   , a.program_year
   , loa.sysma_object_id 
  FROM actions a
  JOIN sysma.l_sysma_object_sysma_action loa ON (a.sysma_action_id = loa.sysma_action_id)  -- jointure sur les sysma_action_id
)

, selected_objects AS (  -- recupération de la geometrie des objets
  SELECT 
    idol.* -- '*' = toutes les colonnes de idol
    , st_buffer(o.geom, 10)::geometry(polygon, 2154) AS geom_buff -- astuce : toutes les géométries sont transformées en polygone pour n'obtenir qu'une couche dans QGIS  
  FROM id_object_lists  idol
  LEFT JOIN sysma.sysma_object o on (o.sysma_object_id = idol.sysma_object_id) -- jointure sur les sysma_object_id
)


, selected_objects_with_action_type_names AS ( -- ajout des noms des types d'actions
  SELECT 
      aty.sysma_action_type
    , so.*
  
  FROM  selected_objects so 
  LEFT JOIN sysma.sysma_action_type aty ON (aty.sysma_action_type_id = so.sysma_action_type_id)

)
-- Construction de la table finale avec ajout d'un identifiant unique (gid)

SELECT 
   row_number() over() as gid
 , sowaty.*
 FROM  selected_objects_with_action_type_names sowaty
 ORDER BY  st_area(sowaty.geom_buff) DESC -- Permet d'afficher les petites géometries au dessus de la couche

A lancer dans le DB manager de QGIS et charger la couche:

  • colonne avec les valeurs uniques : gid
  • colonne géométrique : geom_buff

image

3.4 Un exemple concret : générer un Atlas bilan annuel des travaux

Exemple d'atlas QGIS par masse d'eau :

image

image

...

Clone repository
  • Home
  • manuel
    • V02
      • Documentation Administrateurs
    • V03
      • Documentation Administrateurs
        • 0. Introduction
        • 1. L'administration de Sysma via l'interface
        • 2. La base de données Sysma
        • 3. Sysma et QGis
        • 4. Sysma et la stratégie de gestion de vos données
      • Documentation Utilisateurs
        • 1. Principe général
        • 2. Choix du navigateur internet
        • 3. Se connecter à Sysma
        • 4. Les fenêtres de l'application
        • 5. Consulter les données de Sysma
        • 6. Ajouter des données dans Sysma
        • 7. Fonctionnalités avancées
        • 8. Automatisations