Projet

Général

Profil

Evolution #12 » 04_CdC couches virtuelles et filtrage sur champs joints V3.odt

alain ferraton, 21/11/2014 14:45

# 1457 Réalisation des Couches virtuelles et filtrage des champs joints

charge totale : 28 jours

Description

La réalisation des couches virtuelles a fait l’objet d’un premier
rapport réalisé par Oslandia.

Une
QEP
a été réalisée, ainsi qu’une discussion sur la liste QGIS.

Cette première phase de commande comporte les points suivants :

  • Réaliser un plugin C++ qui implémentera le concept (QGI_REA complexe :
    9 jours)
  • ajouter une fonction de création d’un couche virtuelle (QGI_REA
    simple : 4 jours)
  • ajouter une fonction de filtrage sur les champs joint (QGI_REA moyen ;
    6 jours)
  • Réaliser l’intégration dans Dbmanager (QGI_REA complexe : 9 jours)

Les couches virtuelles représentent un concept nouveau et novateur pour
QGIS. Pour en tenir compte le titulaire pourra faire des propositions de
modifications des premières spécifications de ce cahier des charges qui
seront soumises à la validation du chef de projet du Ministère.

Une couche virtuelle sera matérialisée par une couche spatialite qui
serait le résultat de l’exécution d’une requête SQL avec utilisation de
déclaration de tables virtuelles comme source de données.

Un schéma spécifique de base de données spatialite pourra être utilisé
(toute base spatialite ne pourra pas être considérée comme une couche
virtuelle).

Une extension particulière de fichier pourrait désigner une couche
virtuelle (ex : MaCoucheVirtuelle.qvl pour ‘qgis virtual layer’). Dans
ce cas une nouvelle option de chargement permettra de charger une couche
virtuelle (ex : Ajouter une couche virtuelle dans le menu ‘Couche’)

Toutefois le concept de couche virtuelles stockée sous forme de fichiers
plutôt que dans les fichiers projets doit être affiné car cela ne permet
pas d’utiliser les memory layer comme source de données.

Le titulaire sera attentif aux questions de performances, en particulier
et dans la mesure du possible les index seront utilisés (les index
R-TREE peuvent être utilisés sur les tables virtuelles de spatialite).

Création d’une couche virtuelle

Le module spatialite de table virtuelle sera intégré dans QGIS en tant
que nouveau fournisseur de données (au même titre que les autres
fournisseurs de données vectorielles).

La création devra par exemple être possible à partir du menu QGIS (ex :
‘Couche > nouveau > Nouvelle couche virtuelle).

Cette possibilité pourrait également être accessible par un raccourci
(ex : clic droit sur une couche > Créer une couche virtuelle, qui
serait automatiquement une des ressources (éventuellement unique) de la
couche virtuelle).

Une interface de création sera proposée :

Il s’agit d’une première interface (présentée ici dans une version
dépouillée), elle devra être conçue pour pouvoir évoluer et en
particulier utiliser à terme un assistant SQL.

L’intérêt est de donner la possibilité de créer une couche virtuelle
directement à partir des ressources ouvertes dans QGIS sans passer par
l’utilisation de DBmanager qui est proposée ci-dessous.

Un clic droit > propriété sur une couche virtuelle devra donner accès
aux sources de données et à la requête constituant la couche.

Intégration à DBManager

L’utilisateur devra pouvoir utiliser n’importe quelle couche ouverte
dans QGIS comme ressource pour réaliser une requête SQL dans Dbmanager
(y compris avec l’assistant SQL qui fait l’objet d’une autre commande).

Filtrage des champs y compris champs joints :

Il s’agit de réaliser un ‘pseudo filtrage’ sur tous les champs y compris
les champs joints (ce qui n’est pas possible dans le filtrage actuel de
QGIS), le résultat sera en réalité une couche virtuelle.

En termes d’interface, une possibilité serait de conserver l’item
‘filtrer’ dans le menu déroulant des couches, mais de le brancher sur le
nouveau filtrage utilisant les couches virtuelles lorsque la couche
comporte des champs joints.

    (1-1/1)