Faire une application de saisie avec Qgis đź”—

Posted by MĂ©dĂ©ric Ribreux 🗓 In projects/qgis/

#dev #GIS #QGIS

Introduction

QGis est un logiciel de SIG bureautique qui permet bien des choses. Dans la liste de ses nombreuses fonctionnalités, apparaissent quelques éléments qui permettent de construire une véritable application de saisie métier en peu d'effort.

Il est notamment possible d'élaborer des formulaires de saisie qui permettent de bien orienter la saisie et de minimiser le risque d'erreurs avec un simple paramétrage, c'est à dire sans devoir coder !

Ce document tente de présenter une méthode de construction de ces applications de saisie. Il s'organise autour d'un référentiel métier complet: celui des servitudes d'utilité publique (SUP).

Dans un premier temps, nous tenterons de voir quelles sont les données mises en oeuvre puis nous verrons comment fabriquer nos formulaires. Enfin, nous étudierons des moyens d'adapter l'interface de Qgis pour faciliter la prise en main par les utilisateurs avant de conclure avec des outils d'aide à la saisie.

Note: Ce travail d'exploration des fonctionnalités de QGis requiert la version 1.9.90 (2.0 beta) car nombre des outils illustrés dans ce document ne sont pas implémentés dans la version 1.7.4 (dernière stable à la rédaction de ce document).

Stockage des données

Choix d'un modèle

Avant de commencer à parler de données, il convient de savoir de quoi on parle. Le plus simple est de trouver une analyse toute faîte ! Pour notre thème de travail (les SUP), vous trouverez cette analyse directement sur le site du CNIG. Vous pouvez télécharger les documents et les lire pour vous donner une idée des termes utilisés.

Les documents du CNIG vont plus loin car ils proposent notamment une structuration type de l'information géographique. Ainsi, plutôt que de réinventer la poudre, nous pouvons baser notre travail à suivre sur cette structure de données.

Faisons rapidement un inventaire des couches et des tables à créer:

Prenons un exemple:

On voit donc qu'on dispose d'un modèle de données plutôt relationnel et c'est très avantageux:

Des vraies tables

Pour les besoins de l'exemple, nous allons travailler uniquement sur les SUP de type A4 (nos monuments historiques). Nous allons utiliser un "backend" sous Spatialite pour des raisons de facilité d'installation et d'administration. Sachez que ces exemples s'adaptent très facilement sous PostGIS qui amènera l'effet saisie concurrentielle.

Vous n'aurez besoin que d'installer QGis et son extension QSpatialite pour travailler.

Voici les tables que nous allons créer:

-- Table des servitudes
TODO

-- Tables de paramétrage

Création des tables

Commencez par créer une nouvelle base de données Spatialite à l'aide de l'extension QSpatialite.

Elaboration des formulaires de saisie

L'Ă©laboration des formulaires de saisie sous QGis peut se faire selon deux modes:

La première méthode est la plus simple: il n'y a pas de programmation, juste de la configuration. De plus, c'est le mode qui offre le plus de souplesse et le plus de contrôles pré-définis. Ainsi, vous pourrez ajouter un contrôle de calendrier qui vous permettra de définir des dates de manière plus souple et plus attractive pour vos utilisateurs. En revanche, vous n'aurez que peu de degrés de liberté sur l'apparence du formulaire. Mettez-donc de côté les belles icônes et les belles images avec les jolies fontes auxquelles vous aurez pensé !

La seconde méthode est potentiellement plus riche car vous pouvez mettre en forme les formulaires comme bon vous semble. Néanmoins, il subsiste un vrai problème avec les contrôles qui sont différents des listes déroulantes et des simples entrées de formulaire. Si vous voulez ajouter un calendrier ou même une simple case à cocher, vous ne pourrez pas utiliser cette méthode.

Voyons maintenant comment faire ?

Méthode 1: propriétés des champs

C'est la méthode la plus simple: elle consiste à utiliser l'onglet Champs de qgis pour indiquer le type de contrôle de chaque champ en mode saisie. Cette méthode est très accessible car il n'y a pas besoin de code. De plus, elle permet un minimum de souplesse pour les contrôles, comme nous allons le voir tout de suite.

Méthode 2: fichier de définition de formulaire

TODO

Simplification de l'interface

Maintenant que nous disposons de tous les formulaires utiles pour notre application, il reste à supprimer tout ce qui est inutile. QGis est un SIG généraliste et il vient avec de très nombreuses fonctions qui ne sont certainement pas toutes utiles pour nos utilisateurs. Il n'est par exemple, nul besoin, de fonctionnalités avancées sur les opérations raster pour des utilisateurs qui font uniquement de la saisie de points et d'attributs.

QGis permet de simplifier l'interface grâce au menu Préférences-->Personnalisation.

Mise en place de triggers

Maintenant que nous avons une véritable application de saisie, nous pouvons aller plus loin. En effet, l'intérêt d'une application est de minimiser le temps nécéssaire à la saisie pertinente des données. Ainsi, dans certains cas et spécifiquement pour notre thème de travail, certaines opérations peuvent être automatisées.

Prenons par exemple, le cas des assiettes de SUP des monuments historiques. Celles-ci sont générées à partir d'une emprise de bâtiment classé et elles délimitent un périmètre de 500m autour de ce dernier. Cette distance est toujours la même. Dans ces conditions, nous pouvons imaginer de mettre en place un système qui générerait automatiquement un tampon de 500m autour de tout nouvel objet de la couche des monuments historiques (et ce, dans la couche des assiettes de SUP des monuments historiques).

Conclusion

Comme vous pouvez le constater, cet article est un projet qui manque de temps pour être terminé. Depuis, beaucoup de choses ont changé dans QGIS. Il faudrait sans doute le refaire. Mais ça ne sera pas moi...