SI3P0

Système d'Information 3.0 - DGaML - MSI

View project on GitHub

Tutoriel : Décorer son intérieur avec une carte.

Tu as peut-être déjà vu, sur Internet ou en magasin, ces cartes décoratives de communes et tu penses qu’elles trouveraient bonne place dans ton bureau.

Mais bon, à 30€ le morçeau de papier tu hésites un peu et en plus c’est TA ville que tu voudrais avoir.

Aperçu Aigues-Mortes

Dans ce tutoriel on te montre comment, avec les données de l’IGN, une base PostgreSQL/PostGIS et QGis, tu peux faire ta propre carte. Tu utiliseras pour cela les styles et modèles d’impression que nous mettons à ta disposition.

Pré-requis :

Ressources

https://github.com/CD30-Devil/SI3P0/tree/main/Cartes%20d%C3%A9coratives

Table des matières

1. Importer les données IGN

2. Produire la couche des bâtiments notables et celle pour l’atlas QGis

    2.1. Couche des bâtiments notables

    2.2. Couche d’atlas

3. Créer le projet QGis

    3.1. Ajouter les couches

    3.2. Appliquer les styles

    3.3. Importer les modèles d’impression

    3.4. Exporter une ou plusieurs cartes

4. Conclusion

1. Importer les données IGN

La première étape consiste à intégrer les données IGN dans la base PostgreSQL/PostGIS.

Tu as besoin des cinq données suivantes :

  • la classe batiment du thème Bâti,
  • la classe commune du thème Administratif,
  • la classe surface_hydrographique du thème Hydrographie,
  • la classe troncon_de_route du thème Transport,
  • la classe zone_d_activite_ou_d_interet du thème Services et activités.

Plusieurs méthodes sont possibles pour intégrer les données mais, ici, nous avons pour habitude de travailler avec la version SQL de la France métropolitaine. Certains fichiers y sont trés volumineux dont notamment les classes batiment et troncon_de_route qui pèsent chacune plusieurs Go une fois décompréssées.

Pas de panique, tu peux à la place utiliser les versions découpées par EPCI, Département et Région que nous mettons à ta disposition sur cet espace OneDrive.

Ces découpages proposent une zone tampon de 5 km autour de l’emprise ce qui devrait permettre de produire une carte sans trou même si la commune souhaitée est en limite.

L’exécution d’un fichier SQL, et donc la création des structures et l’import des données, se fait à l’aide de l’outil psql.

L’appel à psql se fait grâce à une commande du type :

psql
    --host=<serveur>
    --port=<port>
    --dbname=<bdd>
    --username=<utilisateur>
    --file="<chemin vers le fichier SQL>"

Il est aussi possible de jouer un ordre SQL simple avec une ligne de commande ainsi construite :

psql
    --host=<serveur>
    --port=<port>
    --dbname=<bdd>
    --username=<utilisateur>
    --command='<ordre SQL à exécuter>'

Tu as peut-être noté que l’outil psql ne prend pas en paramètre le mot de passe utilisateur. PostgreSQL propose différents modes d’authentification et il existe plusieurs techniques pour renseigner le mot de passe que ce soit par la variable d’environnement PGPASSWORD ou en utilisant un fichier de mots de passe. A défaut, psql affichera un prompt de saisie du mot de passe immédiatement après son lancement.

Il faut par ailleurs bien définir l’encodage utilisé par le client (éventuellement via la variable d’environnement PGCLIENTENCODING) sachant que les fichiers de découpage sont mis à disposition en UTF8.

Dans le projet, nous avons mis pour exemple les fichiers SQL correspondants à la communauté de communes Terre de Camargue. Nous mettons également à ta disposition un modèle PowerShell de séquencement des appels dans le dossier PSQL.

2. Produire la couche des bâtiments notables et celle pour l’atlas QGis

Deux couches, déduites des données IGN, sont nécessaires pour la construction des cartes.

2.1. Couche des bâtiments notables

Le nombre de bâtiments dans les données de l’IGN peut-être réellement conséquent.

Plutôt que d’utiliser un filtre sous QGis, qui pourrait ralentir le travail de cartographie, on précalcule les bâtiments notables à afficher. On utilise pour cela une vue materialisée qui va extraire des bâtiments ceux à représenter.

L’ordre de création de cette vue est le suivant :

create materialized view cartodeco_batimentnotable as
select
    row_number() over () as id,
    geometrie
from batiment
where nature in (
    'Arc de triomphe',
    'Arène ou théâtre antique',
    'Chapelle',
    'Château',
    'Eglise',
    'Fort, blockhaus, casemate',
    'Monument',
    'Tour, donjon'
);

Il est disponible dans le fichier Bâtiments notables.sql.

2.2. Couche d’atlas

L’outil atlas de QGis permet de produire de façon automatique plusieurs cartes d’un même format. Cette production se fait à l’appui d’une couche dont la géographie et les attributs sont utilisés pour “contrôler” l’impression.

Sur le plan géographique, la couche d’atlas que nous calculons ici vise à privilégier l’affichage des zones agglomérées. Pour cela, l’idée est de centrer les cartes sur les mairies celles-ci étant souvent au coeur des communes.

Les attributs, quant à eux, sont utiles pour renseigner les étiquettes des modèles d’impression.

Cette vue est calculée grâce à l’ordre suivant :

create materialized view cartodeco_atlas as
select
    row_number() over () as id,
    c.code_insee,
    c.nom_officiel,
    row_number() over (partition by c.code_insee) as num_mairie,
    ST_AsLatLonText(ST_Transform(ST_Centroid(zai.geometrie), 4326), 'D° M'' S.SSS" C') as coordonnees,
    c.population,
    ST_Centroid(zai.geometrie) as geometrie
from zone_d_activite_ou_d_interet zai
inner join commune c on ST_Intersects(c.geometrie, zai.geometrie)
where nature = 'Mairie'
and (nature_detaillee is null or nature_detaillee = 'Hôtel de ville');

Il est disponible dans le fichier Atlas.sql.

3. Créer le projet QGis

A ce stade, toutes les données sont disponibles pour produire les cartes. Il est désormais question de créer le projet QGis.

3.1. Ajouter les couches

Pour pouvoir créer la carte, tu dois préalablement paramétrer dans QGis la connexion à la base PostgreSQL/PostGIS porteuse des données grâce au panneau Explorateur.

Ensuite, il faut créer un nouveau projet et y ajouter les 5 couches suivantes ainsi ordonnées :

  • cartodeco_atlas (dont l’affichage est à désactiver)
  • cartodeco_batimentnotable
  • troncon_de_route
  • surface_hydrographique
  • commune

Ces étapes doivent aboutir à un résultat proche de l’aperçu ci-dessous.

Ajout des couches

3.2. Appliquer les styles

QGis applique de façon aléatoire un style aux couches lorsque celles-ci sont ajoutées au projet.

A cette étape, il te faut modifier les styles des couches visibles en rechargeant pour chacune le fichier QML correspondant disponible à cet emplacement. Le chargement se fait, depuis la fenêtre de propriétés de la couche, grâce au menu “Style > Charger le style…”.

Style > Charger le style...

Après avoir appliqué les quatre fichiers QML, ton projet devrait ressembler à l’image qui suit.

Chargement des styles

Tu te demandes peut-être pourquoi les communes sont blanches et donc a priori invisibles. Cette astuce permet de fixer un fond bleu à la carte dans le modèle d’impression et ainsi faire apparaître les côtes pour les communes en bordure de mer et d’océan.

3.3. Importer les modèles d’impression

Quatres modèles d’impression QPT sont disponibles dans ce dossier :

  • un format 18x24 Portrait,
  • un format A3 Portrait,
  • un format A3 Paysage,
  • un format A3 Quiz où le nom de la commune est masqué et remplacé par une question-indice.

Depuis le gestionnaire de mises en page, choisis l’option “Spécifique” et indique le chemin vers le modèle à importer. Clique ensuite sur “Créer…” et renseigne un nom avant de valider.

Gestionnaire de mises en page

Le composeur d’impression s’ouvre et présente la mise en page telle que définie par le modèle QPT. Dans celle-ci, l’atlas est normalement pré-paramétré avec la couche créée à l’étape 2.2.

Paramétrage de l'atlas

L’objet carte principal est quant à lui contrôlé par l’atlas.

Paramétrage de l'atlas

3.4. Exporter une ou plusieurs cartes

Tout est prêt ! Les cartes peuvent être exportées.

Plusieurs options s’offrent à toi. Tu peux par exemple lancer la génération de l’atlas grâce aux menus “Atlas > Exporter l’atlas en …”.

Si tu ne souhaites pas générer l’ensemble des cartes, tu peux aussi appliquer un filtre dans les paramètres de l’atlas.

Filtre de l'atlas

Enfin, tu peux également activer l’aperçu, choisir une des communes et en générer unitairement la carte via l’un des menus “Mise en page > Exporter au format …”.

4. Conclusion

Te voilà désormais l’heureux détenteur d’un projet QGis de génération de cartes décoratives. Enfin “décoratives” ?!? Il parait que les goûts et les couleurs, ça ne se discutent pas.

Charge à toi, si le coeur t’en dit, de revoir les styles et d’adapter les modèles d’impression pour aboutir à TA carte idéale. N’hésite pas à nous repartager tes résultats, voire même tes fichiers QML et QPT que nous pourrons re-diffuser sur ce projet Git.

Pour la MSI,

Michaël Galien - @Tetranos