QField PostGIS : du terrain à la carte web, sans export

Publié le 11 min de lecture

Ce guide s'adresse aux équipes qui collectent avec QField et veulent retrouver les relevés dans une base PostGIS, puis sur une carte Lizmap, sans export ni copie manuelle. Il décrit la chaîne QField PostGIS complète, ce qu'il faut préparer dans le projet QGIS et ce que fait chaque maillon.

La chaîne terrain, PostGIS, Lizmap

Trois logiciels libres, trois rôles. QField collecte sur le téléphone. PostgreSQL et PostGIS stockent les données spatiales. Lizmap, servi par QGIS Server, publie le projet QGIS sous forme de carte web. Le maillon qui les relie est le service de synchronisation : LizPack Field, qui repose sur la même technologie de synchronisation que QFieldCloud et fonctionne avec l'application QField officielle.

  1. L'agent saisit un relevé dans QField, avec ou sans réseau.
  2. Au retour du réseau, il synchronise : les modifications remontent vers LizPack Field.
  3. Avec le plan Pro, LizPack Field écrit les relevés directement dans les couches PostGIS du projet.
  4. La carte Lizmap qui affiche ces couches PostGIS se met à jour à chaque synchronisation, sans manipulation.

LizPack est une infrastructure géospatiale open source : il n'est l'auteur d'aucun de ces logiciels, il les héberge, les relie et les entretient. Voir ce que fait LizPack.

L'intérêt de cette chaîne tient à l'absence d'étape manuelle. Sans elle, il faut récupérer les fichiers de chaque agent, les fusionner, corriger les doublons puis réimporter le tout dans la base et republier la carte : autant d'occasions de perdre ou de dupliquer des relevés, et des jours de décalage entre le terrain et ce que voient les décideurs.

Ce qu'il faut pour relier QField et PostGIS

ÉlémentRôleChez LizPack
Plan Pro de LizPack FieldÉcrit les relevés dans PostGIS.Projets illimités, jusqu'à 5 collaborateurs, liaison PostGIS.
Base PostGISReçoit et stocke les relevés.Une base dédiée de 1 à 10 Go, PostgreSQL 17 et PostGIS 3.5, connexion SSL, ou la base comprise avec une instance LizPack Map Basic ou Pro.
Projet QGISDéfinit les couches, formulaires et styles.Préparé sur votre poste dans QGIS Desktop.
Instance LizmapPublie la carte web.LizPack Map, l'hébergement Lizmap de LizPack : Lizmap et QGIS Server déjà reliés à PostGIS.

Avec le plan Gratuit de LizPack Field, les relevés restent dans les fichiers du projet, que vous récupérez dans QGIS : la liaison PostGIS demande le plan Pro, à 15 USD par mois au moment de la rédaction. Tarifs à jour sur la page tarifs.

Tous ces éléments se gèrent depuis le même compte LizPack : la base, l'instance LizPack Map et LizPack Field partagent la même connexion. Vous n'avez donc pas à créer d'identifiants distincts pour chaque service, et la liaison entre la base et l'instance se fait depuis l'espace client, sans manipulation de serveur.

Choisir son instance LizPack Map

La carte web de la chaîne QField PostGIS est servie par Lizmap. Chez LizPack, c'est le rôle de LizPack Map : une instance Lizmap sur votre sous-domaine, avec QGIS Server, une base PostGIS et un cache de tuiles, en ligne en quatre minutes environ, avec un certificat HTTPS renouvelé automatiquement.

Plan LizPack MapCe qui compte pour la chaîne terrain
FreeEssai gratuit de 30 jours, sans carte bancaire : de quoi monter et tester toute la chaîne avant de s'engager.
BasicUne instance avec son QGIS Server. Suffisant pour publier une carte qui lit une base dédiée.
ProDeux instances, connexion directe à la base de l'instance depuis QGIS Desktop ou pgAdmin, mises à jour de Lizmap et de QGIS Server comprises, jusqu'à cinq collaborateurs.
EnterpriseSur devis.

Deux montages sont possibles. Soit les relevés vont dans une base dédiée, créée à part et dimensionnée de 1 à 10 Go, que l'instance et LizPack Field lisent toutes deux. Soit ils vont dans la base comprise avec l'instance. La base dédiée a l'avantage d'être indépendante de l'instance : vous pouvez la garder si vous changez d'instance.

Prix au moment de la rédaction : LizPack Map Basic 10 USD par mois, Pro 20 USD par mois. Grilles à jour sur la page tarifs.

Préparer les couches PostGIS dans le projet QGIS

La règle centrale : les couches de collecte doivent être des couches PostGIS dans le projet QGIS, et non des fichiers locaux. Ce sont ces couches que LizPack Field alimente.

  1. Dans QGIS, ajoutez la connexion à votre base PostGIS avec l'hôte, le port et les identifiants fournis à sa création.
  2. Créez les tables de collecte dans la base, avec une clé primaire auto-incrémentée et une colonne géométrique au bon type et au bon système de coordonnées.
  3. Ajoutez ces tables au projet comme couches PostGIS et configurez leurs formulaires : listes de valeurs, contraintes, valeurs par défaut, photos.
  4. Ajoutez les fonds de carte et couches de contexte utiles sur le terrain.
  5. Enregistrez le projet et publiez-le vers LizPack Field depuis QGIS.
  • Une clé primaire fiable évite les conflits quand plusieurs agents créent des objets hors ligne en même temps.
  • Gardez les noms de champs simples, sans espaces ni accents : ils seront plus faciles à exploiter en SQL et dans Lizmap.
  • Testez un aller-retour complet avec un seul agent avant d'ouvrir le projet à toute l'équipe.

Exemple : une table de collecte prête pour QField

Voici une table de points d'eau telle qu'on peut la créer dans la base, depuis le gestionnaire de bases de données de QGIS ou pgAdmin. Elle reprend les règles de la section précédente.

CREATE SCHEMA IF NOT EXISTS collecte;

CREATE TABLE collecte.points_eau (
  id serial PRIMARY KEY,
  type_ouvrage text NOT NULL,
  etat text NOT NULL,
  date_releve timestamptz DEFAULT now(),
  agent text,
  photo text,
  valide boolean DEFAULT false,
  geom geometry(Point, 4326) NOT NULL
);

CREATE INDEX ON collecte.points_eau USING gist (geom);

CREATE VIEW collecte.points_eau_valides AS
  SELECT * FROM collecte.points_eau WHERE valide;
  • id serial : une clé primaire numérotée automatiquement par la base, ce qui évite les collisions entre agents.
  • NOT NULL sur le type et l'état : la base refuse un relevé incomplet, en plus des contraintes du formulaire.
  • DEFAULT now() : la date de saisie se remplit seule.
  • geometry(Point, 4326) : un type et un système de coordonnées explicites, que QGIS et Lizmap lisent sans ambiguïté.
  • L'index spatial accélère l'affichage dans QGIS et dans la carte Lizmap quand le nombre de relevés grandit.
  • La vue des relevés validés sert de source à la carte publique : seuls les objets marqués comme validés par le responsable y apparaissent.

Ajoutez ensuite la table au projet QGIS comme couche PostGIS, configurez son formulaire, et ajoutez la vue au projet publié dans Lizmap. Adaptez le système de coordonnées à votre pays si vos données de référence en utilisent un autre.

Afficher les relevés dans Lizmap

Pour la carte web, publiez un projet QGIS qui lit les mêmes couches PostGIS, sur votre instance Lizmap. Ce peut être le projet de collecte lui-même ou un projet de consultation distinct, avec d'autres styles et sans les champs internes. Vous le déposez depuis le navigateur ou depuis QGIS avec l'extension LizPack Publisher, comme décrit dans publier un projet QGIS en ligne.

Comme Lizmap lit directement la base, il n'y a rien à republier après une campagne : chaque synchronisation de QField met la base à jour, et la carte affiche l'état courant au chargement suivant. Les couches PostGIS servies par Lizmap peuvent aussi être éditées en ligne, depuis le bureau.

Pour partager les relevés par un lien sans projet Lizmap, LizPack Viewer, inclus avec LizPack Field, compose une carte à partir des couches de vos projets. Voir créer une carte en ligne et la partager.

Si des agents de bureau doivent corriger des relevés depuis la carte web, activez l'édition de la couche dans la configuration Lizmap du projet, avec le plugin Lizmap de QGIS, et limitez-la aux groupes d'utilisateurs concernés. Les corrections sont écrites dans la même table PostGIS que les relevés de QField.

Vérifier que la chaîne fonctionne

Avant d'ouvrir la campagne à toute l'équipe, faites un aller-retour complet et contrôlez chaque maillon. Si un relevé n'arrive pas au bout, cette liste aide à trouver où il s'arrête.

  1. Sur un téléphone, saisissez un objet d'essai dans QField puis synchronisez.
  2. Dans le tableau de bord de LizPack Field, vérifiez que la modification apparaît parmi les modifications reçues et dans le journal des traitements.
  3. Dans QGIS Desktop, ouvrez la table PostGIS et cherchez l'objet par sa date ou son agent.
  4. Ouvrez la carte Lizmap et rechargez la page : l'objet doit apparaître, ou n'apparaître que dans la vue publique une fois validé.
  5. Supprimez l'objet d'essai, puis vérifiez que la suppression est bien reportée partout.
  • La modification n'apparaît pas dans LizPack Field : la synchronisation n'a pas abouti ; vérifiez le réseau du téléphone et relancez-la.
  • Elle apparaît dans LizPack Field mais pas dans PostGIS : vérifiez que le compte est en plan Pro et que la couche du projet est bien une couche PostGIS, pas un fichier local.
  • Elle est dans PostGIS mais pas sur la carte : vérifiez que le projet Lizmap lit la même table ou la bonne vue, et que l'objet remplit le filtre de la vue.

Travailler à plusieurs sur la même base

Dès que plusieurs agents collectent dans les mêmes couches PostGIS, quelques règles évitent les conflits et les données incohérentes. Elles se décident au moment de préparer le projet, pas après la première campagne.

  • Créer plutôt que modifier. Les créations d'objets se combinent sans difficulté : chaque agent ajoute ses propres points. Les modifications d'un même objet par deux agents sont plus délicates ; attribuez des secteurs pour qu'un objet existant ne soit touché que par une personne.
  • Tracer l'origine de chaque relevé. Ajoutez des champs pour l'auteur et la date de saisie, remplis automatiquement par une expression. Ils servent au contrôle qualité et aux statistiques de suivi.
  • Séparer collecte et diffusion. Les agents écrivent dans les tables de collecte ; la carte publique lit une vue qui ne montre que les relevés validés. Le responsable valide au bureau en changeant un champ d'état.
  • Garder les couches de référence en lecture seule. Limites administratives, cadastre ou réseaux existants servent de contexte sur le terrain et n'ont pas à être modifiés depuis QField.

Autre point à prévoir : l'évolution du modèle de données. Ajouter un champ à une table PostGIS en cours de campagne est possible, mais le projet QGIS doit alors être mis à jour et republié vers LizPack Field, et les agents doivent récupérer la nouvelle version avant de continuer. Regroupez ces changements et faites-les entre deux campagnes, en prévenant l'équipe.

Enfin, pensez au volume. Les photos prises sur le terrain occupent vite plus de place que les données elles-mêmes. Surveillez l'espace de votre plan LizPack Field et de votre base, et choisissez une résolution de photo raisonnable dans le formulaire.

Avant chaque nouvelle campagne, faites un point rapide avec l'équipe : quelles couches sont ouvertes à la saisie, quels secteurs sont attribués à qui, quels champs ont changé. Cinq minutes de coordination évitent des heures de nettoyage dans la base, et la carte Lizmap publiée reste cohérente pour ceux qui la consultent.

Exploiter la base QField PostGIS

Une fois les relevés dans PostGIS, ils sont accessibles à tous vos outils sans export : QGIS Desktop, pgAdmin, DBeaver, vos scripts, et GeoServer si vous publiez des services OGC avec GeoServer Cloud.

  • Requêtes SQL de suivi : nombre d'objets relevés par jour, par agent, par zone.
  • Vues pour la carte publique, qui masquent les champs internes.
  • Contrôles de qualité : géométries invalides, champs obligatoires vides, doublons.
  • Surveillance de l'espace : des courriels vous préviennent dès que la base atteint 60 % de son volume, puis à 75, 80, 90 et 95 %.

Pour la préparation du projet et le travail des agents sur le terrain, voir le guide collecte terrain QField.

Comme la base est une base PostgreSQL standard, vous pouvez aussi en reprendre le contenu à tout moment avec les outils habituels de PostgreSQL, pour une archive ou un transfert.

Les erreurs fréquentes de la chaîne QField PostGIS

  • Collecter dans un GeoPackage en pensant remplir PostGIS. Seules les couches PostGIS du projet sont écrites dans la base ; une couche fichier reste dans les fichiers du projet.
  • Une table sans clé primaire. QGIS la charge parfois en lecture seule ou la traite mal ; ajoutez toujours une clé primaire avant de publier.
  • Un système de coordonnées différent entre la table et le projet. Les objets s'affichent au mauvais endroit ou pas du tout ; fixez-le dès la création de la table.
  • Modifier la structure en pleine campagne sans republier. Les agents travaillent sur l'ancienne version du projet et certains champs ne remontent pas.
  • Publier la table brute sur la carte publique. Les relevés non contrôlés et les champs internes deviennent visibles ; passez par une vue.

Aucune de ces erreurs n'est grave si elle est repérée lors de l'essai décrit plus haut. C'est pourquoi l'aller-retour complet avec un seul agent reste l'étape la plus rentable de toute la mise en place.

Questions fréquentes

QField peut-il écrire directement dans PostGIS ?

Avec LizPack Field en plan Pro, oui : les couches PostGIS du projet reçoivent directement les relevés à chaque synchronisation. Avec le plan Gratuit, les données restent dans les fichiers du projet.

Non pour collecter : le projet est embarqué sur l'appareil. La connexion n'est nécessaire qu'au moment de synchroniser, et les relevés arrivent alors dans PostGIS.

Publiez sur votre instance Lizmap un projet QGIS qui lit les mêmes couches PostGIS. La carte se met à jour à chaque synchronisation, sans republier.

Une base dédiée LizPack de 1 à 10 Go, ou la base comprise avec une instance LizPack Map Basic ou Pro. Les deux sont accessibles depuis QGIS Desktop.

Oui. Le plan Pro accepte jusqu'à 5 collaborateurs ; prévoyez une clé primaire auto-incrémentée sur chaque table de collecte.

Les solutions citées

Tous les guides

Prêt à déployer ?

Essai gratuit de 30 jours, sans engagement et sans carte bancaire.