BETA - De QGIS à Grist en 2 clics
Post à jour 09/05/2026
De QGIS à Grist en 2 clics => https://nic01asfr.github.io/Widgets-Grist/qgis2grist/
Importez vos projets cartographiques QGIS directement dans Grist — données, géométries et carte interactive incluses.
Statut BETA — Le widget a été validé sur plusieurs cas réels (cartes flood qgis2web, projets QGIS multi-couches avec GPKG externes, GeoPackages divers), mais l’écosystème QGIS est large et tous les cas ne sont pas encore couverts. Si un fichier QGIS plante chez vous ou produit un résultat surprenant, n’hésitez pas à le signaler dans ce fil : c’est exactement ce dont le widget a besoin pour mûrir.

QGIS → Widget → Grist (votre projet QGIS → analyse, convertit, adapte → tables + carte interactive dans Grist)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① Le constat
On produit des cartes dans QGIS tous les jours : risques naturels, aménagement, patrimoine, inventaires terrain… Mais ces projets restent souvent enfermés sur le poste du géomaticien. Pour les partager, il faut exporter en PDF statique ou monter un serveur carto — deux options lourdes.
Grist, lui, est collaboratif, accessible à tous, avec des droits fins. Mais il ne parle pas « géo » nativement.
Et si on pouvait glisser-déposer un projet QGIS dans Grist et retrouver automatiquement les données en tables + la carte interactive ?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
② Le widget QGIS → Grist
C’est un widget personnalisé Grist — une page web embarquée dans un document Grist qui interagit avec ses données via l’API plugin.
Formats acceptés
• .qgz — un projet QGIS. Le .qgz est déjà un format ZIP standard : il contient le .qgs (XML du projet) et, en principe, peut embarquer ses .gpkg de données. En pratique, beaucoup de projets QGIS utilisent des datasources externes (chemins relatifs vers des .gpkg à côté du projet). Dans ce cas il faut fournir au widget l’archive ZIP qui contient à la fois le .qgz et les .gpkg qu’il référence (le widget cherche les datasources dans le ZIP parent). • .qgz QField — paquet exporté depuis QField Sync. • .gpkg — un GeoPackage standalone (toutes ses tables vecteur deviennent des tables Grist). • qgis2web — .zip ou .html exporté depuis le plugin QGIS qgis2web.
Le processus
● Glisser-déposer le fichier Le widget détecte le format et lance l’analyse.
● Analyse des couches Extraction des couches vecteur, champs attributaires, géométries, alias QGIS (libellés humains des champs) et style QML. Aperçu du schéma avant l’import.
Si le projet QGIS référence des .gpkg externes non fournis, le widget bloque l’import explicitement plutôt que de créer des tables vides : il vous demande de fournir un ZIP combiné .qgz + .gpkg.
● Création des tables Grist Pour chaque couche : une table avec le bon typage (Text, Int, Numeric, Date, Bool…), les coordonnées (Point) ou géométries GeoJSON (Line / Polygon), un fill_color pré-calculé d’après le style QML, et toutes les entités. Les alias QGIS sont préservés comme libellés Grist quand ils sont présents.
● Adaptation de l’interface (qgis2web) Pour les exports qgis2web : le widget réécrit le HTML source pour qu’il lise ses données depuis les tables Grist plutôt que depuis les JSON intégrés. La carte devient vivante — liée aux données.
● Carte Leaflet native Pour les autres formats (.qgz, .gpkg), le widget génère une carte Leaflet directement, avec une légende reconstituée fidèlement depuis le style QGIS (couleurs et comptages par catégorie).
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
③ Démonstrations
Cas 1 — Carte flood qgis2web (Béziers)
Une simulation d’inondation à Béziers (Directive Inondation, données Georisques TRI), générée sous forme de carte HTML interactive.
La carte HTML originale dans le navigateur — slider de hauteur d’eau, légende complète, statistiques en temps réel (833 bâtiments exposés à 5m).
On dépose ce fichier HTML dans le widget. Il détecte 3 couches (zone inondable, bâtiments, établissements sensibles), crée les tables, importe les ~10 000 entités, puis réadapte la carte pour qu’elle se nourrisse des données Grist.
Résultat dans Grist — la carte interactive fonctionne identiquement (slider, légende, stats), et les données sont accessibles en table dessous.
Cas 2 — Projet QGIS multi-couches (étude urbaine Marseille)
Un projet .qgz d’étude du 4ème arrondissement de Marseille, référençant 5 GeoPackages externes (limite, voirie, végétation, arbres OSM, commerces & services). On zippe le .qgz avec ses 5 .gpkg et on dépose le ZIP.
Le widget importe les 5 couches (Polygon, Line, Point — toutes mélangées) et reconstitue la légende QGIS originale : pour la voirie, on retrouve les catégories Double sens (590), Sens unique (496), Impasse (116), Autre (48), Autre piéton (11) avec leurs couleurs ; pour les commerces, les pastilles colorées par type (Commerce, Restauration, Santé, Bureau/Service, Éducation, Service financier, Autre).
AVANT — projet QGIS local sur poste → APRÈS — document Grist collaboratif
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
④ Ce que ça change concrètement
Collaboratif Les données géo sont dans Grist — partageables, filtrables, éditables par toute l’équipe.
Synchronisé Modifier une donnée en table met à jour la carte (polling toutes les 5 s).
Zéro config serveur Pas de GeoServer, pas de plugin à installer côté Grist. Un glisser-déposer et c’est prêt.
Persistant Le widget se restaure à chaque ouverture — la config est sauvegardée dans le document Grist.
Multi-format qgis2web, QGZ classique, paquets QField, GeoPackage standalone, GeoJSON en ZIP… Le widget s’adapte aux formats les plus courants.
Fidélité visuelle La légende QGIS (couleurs, catégories, comptages) est reconstituée dans Grist sur les couches qui ont un style QML categorizedSymbol.
Self-hostable Le widget est un simple fichier HTML — il fonctionne avec n’importe quelle instance Grist (SaaS, self-hosted, grist-core…).
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⑤ Cas d’usage envisagés
● Risques naturels Importer des cartes d’inondation, de submersion ou de mouvements de terrain dans un document partagé pour un suivi collaboratif des enjeux exposés.
● Inventaire terrain Transformer un projet QGIS d’inspection ou de relevé en base de données collaborative — chaque objet inspecté devient une ligne éditable avec sa géométrie.
● Aménagement & mobilité Partager les résultats d’une analyse spatiale (réseau cyclable, accessibilité, zonage…) avec des collaborateurs ou des partenaires, sans leur demander d’installer QGIS.
● Relevés QField Le relevé terrain QField (couches + GPS) est importé directement dans un document Grist partagé avec l’équipe projet. (Note : l’upload des photos / pièces jointes QField vers une colonne Attachments Grist n’est pas encore implémenté.)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⑥ Comment l’essayer
Copiez : https://nic01asfr.github.io/Widgets-Grist/qgis2grist/ dans un widget personnalisé.
Le widget est un fichier HTML unique à héberger en widget personnalisé dans votre document Grist. Il faut lui donner un accès « full » au document (il crée des tables et insère des données).
Prérequis : un export qgis2web, un projet .qgz (avec ses .gpkg zippés ensemble si externes), un GeoPackage .gpkg, ou un paquet QField. L’export qgis2web est recommandé pour la première prise en main car il conserve aussi le style et les contrôles de la carte d’origine.
Vous créez dans QGIS, vous exportez via qgis2web ou QField selon, vous insérez dans le widget : vos données dans Grist, accessibles à toute l’équipe.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⑦ Aidez à le faire mûrir
Le widget marche sur les cas que j’ai pu tester, mais l’écosystème QGIS est large : versions QGIS 2/3, conventions de nommage, formulaires personnalisés, GPKG produits par d’autres outils que QGIS… tout n’est pas encore couvert.
Si vous tombez sur un cas qui plante ou produit un résultat surprenant, postez-le dans ce fil :
- Le format du fichier (qgz / gpkg / qgis2web…) et ce qu’il contient (nb de couches, types, particularités)
- Le message d’erreur exact si le widget tombe en erreur
- Ou une description du comportement bizarre observé dans Grist
C’est ce qui permettra de couvrir les cas d’usage réels au-delà des miens.
![]()