TP - Modification et nettoyage des données#
Introduction#
Nous allons utiliser des premières expressions pour :
- convertir du texte en date
- remplir les géométries à partir des coordonnées
- nettoyer les valeurs de certains champs (entier)
Modifier la géométrie via une expression#
On va définir les points via la longitude et latitude et une expression :
- On passe la couche
observationscouche en🖊 Édition - On utilise la calculatrice de champs
et on modifie la géométrie
via l'expression
Créer une géométrie de type Point depuis une longitude et une latitude
On peut le faire simplement avec make_point
1 | |
Dans l'interface de la calculatrice :
- Bien cocher
Mise à jour d'un champ existant. - Choisir dans la liste
<geometry>pour modifier la géométrie. - Utiliser la bonne expression dans le bloc texte.
- Valider.

On visualise alors les points sur la carte#
Les géométries sont bien créées et correspondent aux coordonnées.
On sauvegarde les données via la disquette
de la barre de numérisation !

On transforme un champ texte en Date#
Exemple du champ date_observation de type texte, qui contient par exemple
un texte 26/06/2013.
Ce champ a été détecté par QGIS comme une chaîne de caractères (type QString). On ne peut donc pas réaliser des calculs ou des tris par date.
Pour régler ce souci, on peut utiliser les expressions :
- On crée un nouveau champ
date_obsde typeDatevia la calculatrice de champ
avec :
Convertir du texte en date
1 2 3 | |
- On obtient bien un nouveau champ
date_obs:
- On supprime le champ
date_observation - On enregistre l'édition via la disquette
On pourra donc maintenant faire des calculs de date, par exemple l'âge en jours de l'observation, via :
Calculer l'âge d'une date en jours
1 2 3 4 | |
- Ou tester si la date donnée est bien inférieure ou égale à la date du jour
Tester si une date n'est pas dans le futur
1 2 | |
Vrai ou Faux
On nettoie les valeurs des champs avec des entiers#
Les valeurs non entières NAN, NSP, Inconnu, RAS ne doivent pas
apparaître dans les champs qui attendent des entiers.
On voit dans l'image suivante un extrait de la table attributaire montrant ces valeurs :

On peut appliquer une expression avec la calculatrice de champ sur
tous les champs qui doivent contenir des entiers:
nid_nb_oeuf, nid_nb_poussin, nid_nb_immature, nid_nb_adulte
Soit en remplaçant 'NSP' par NULL
Si on veut seulement remplacer NSP par du vide NULL :
- on utilise
trimpour supprimer les espaces avant et après le texte, - on utilise
replacequi attend 3 paramètre: le texte source, la valeur à rechercher, la valeur à remplacer, - on utilise
Nullifqui metNULLsi la valeur dans le 1er paramètre vaut celle du 2ème paramètre.1 2 3 4 5 6 7 8 9 10 11 12
-- On remplace 'NSP' par NULL -- nullif permet de mettre NULL si la valeur vaut le 2ème paramètre Nullif( -- replace remplace une valeur par une autre replace( -- trim permet de supprimer les espaces avant/après trim("nid_nb_oeuf"), 'NSP', '' ), '' )
C'est possible, mais il faut connaître à l'avance toutes les valeurs à nettoyer.
Si on aime les expressions régulières, on peut rendre un peu plus générique le chercher/remplacer :
Soit avec une expression régulière (plus complexe)
Pour remplacer tout ce qui n'est pas un entier en valeur NULL :
- Utilisation de
CASE ... WHEN ... THEN ... ENDpour faire une condition - Utilisation de
trimpour nettoyer les espaces - Utilisation de
regexp_matchpour remplacer par expression régulière - Conversion en entier via
to_int
1 2 3 4 5 6 | |
On doit ouvrir la calculatrice de champ et modifier les valeurs pour chacun des
quatre champs nid_nb_oeuf, nid_nb_poussin, nid_nb_immature, nid_nb_adulte.

Après le premier passage sur le champ nid_nb_oeuf on peut constater que la donnée
a bien été nettoyée :

Ne pas oublier d'enregistrer la couche
Il faut bien penser à enregistrer les modifications récentes via
la disquette
puis quitter le mode 🖊 Édition
Modifier le type des quatre champs nettoyés#
On doit maintenant utiliser le Gestionnaire de bases de données pour changer le type
des champs nid_nb_xxxx de Texte à Entier
On crée d'abord une connexion vers le GeoPackage :
- menu
Couche / Gestionnaire des sources de données - Onglet
GeoPackage, boutonNouveau - Aller chercher le fichier GeoPackage
suivi_donnees_moqueuret valider.
Ensuite, on ouvre le Gestionnaire de bases de données :
- Dans le panneau de gauche, on double-clique sur
GeoPackage - Puis sur le nom de la connexion
suivi_donnees_moqueurqu'on vient de créer - Sur la table
observations, on ouvre le menu Table > Modifier une table, et on choisit le typeSMALLINTouINTEGERpour les 4 champs - On enregistre

Ensuite, on doit recharger la couche dans QGIS:
- soit on enregistre le projet, on le ferme et on le ré-ouvre
- soit on utilise un clic-droit sur la couche des observations et
Changer la source de donnéespuis on va chercher le fichierGeoPackageet la table des observations