Édition#
Nous allons faire un petit modèle de données pour recenser des logements.
Nous pourrons voir à travers cet exemple différent aspect de Lizmap.
SQL#
Commençons par créer les tables.
1 2 |
|
Afficher les solutions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
N'oublions pas l'index spatial
1 |
|
Info
Vous devez avoir une couche des communes avec les codes INSEE dans votre projet également.
Propriétés du projet#
- Charger les couches dans le projet QGIS.
- Propriétés du projet, onglet Relations, ajouter toutes les relations automatiquement avec le bouton découvrir.
- Vous devriez avoir 2 relations dans le tableau.
Formulaire logement#
Tip
Regarder uniquement le formulaire dans QGIS bureautique dans un premier temps, pendant les différentes étapes.
- Dans les propriétés de la couche
logement
: - Ajouter des alias sur les champs
- Faire un formulaire par glisser/déposer
- Ajouter des onglets et des groupes
Tip
Nous n'avons pas besoin du champ id
pour nos utilisateurs lors d'une édition. C'est une information interne.
Paramétrage des "outils" pour les champs#
Pour l'ensemble des champs, nous allons configurer les Type d'outil ainsi que les contraintes si nécessaire.
Nous allons utiliser la documentation Lizmap sur les formulaires avancés.
adresse
:- Édition de texte
- Ajouter une expression pour la contrainte et une erreur qui sera affichée si l'expression n'est pas valide.
Tip
On remarque que QGIS détecte les contraintes des champs qui sont en base de données. Mais on peut personnaliser les messages d'erreurs.
Tip
Concernant l'expression de contrainte, QGIS va l'exécuter et va vérifier si l'expression renvoi une valeur booléenne si la saisie est valide ou non.
code_insee
:- Valeur relationnelle
- Couche commune
- Clé INSEE_COM
- Valeurs NOM
- Expression de filtre
intersects($geometry, @current_geometry)
- Ajouter une contrainte et une erreur
- Renforcer la contrainte par expression
type
:- Liste de valeurs
studio
➡Studio
appartement
➡Appartement
maison
➡Maison
villa
➡Villa
- ...
nb_pieces
:- Plage de valeur
pmr
:- Case à cocher, uniquement oui ou non, car définition non null lors de la création de la table
photo
:- Pièce jointe
- Chemin par défaut, ou alors un dossier comme
../media/specific_media_folder
- Filtre
Images (*.png *.jpg *.jpeg)
- Chemin par défaut, ou alors un dossier comme
- Pièce jointe
besoin_renov
:- Liste de valeurs, pour transformer la case à cocher en menu déroulant pour inclure le null possible.
- Valeur NULL ➡
Inderterminé
true
➡Oui
false
➡Non
- Valeur NULL ➡
- Liste de valeurs, pour transformer la case à cocher en menu déroulant pour inclure le null possible.
fiche_web
:- Texte
- Renforçons la contrainte avec une expression. Une regex est plus appropriée, mais utilisons une expression
simple pour vérifier que la chaîne commence par
http
- Ajouter une description pour la contrainte
date_construction
- Date
- format
dd/MM/yyyy
- La date de construction n'étant pas obligatoire, il faut en tenir compte dans l'expression de vérification
"date_construction" is null or "date_construction" <= now()
- format
- Date
date_revision_fiche
- Date
- Format date
- Date
Utilisation des popups avec la relation#
Nous pouvons activer :
- les popups "Automatique" pour la couche des états des lieux.
- l'affichage des popups enfants dans la couche des logements
Édition des tables filles#
Pour permettre l'ajout des états des lieux, il faut :
- Avoir les relations
- Avoir l'édition sur les 2 couches
- Avoir l'outil de table attributaire sur les couches filles
Quelques solutions#
Vérifier qu'un champ n'est ni NULL ni une chaîne vide
"adresse" IS NOT NULL AND "adresse" <> ''
Vérifier que la chaîne commence par http
left("fiche_web", 4) = 'http'
Continuer plus loin#
On peut continuer plus loin avec l'utilisation de la dataviz, par exemple pour afficher dans les informations d'une commune la répartition des types de logements.