Index de l'article

Nous allons voir les 1ères opérations de prise en main de QGIS. QantumGIS n'est que la partie émergée d'un système très performant : le couple QGIS-PostGIS, que nous aborderons.

Nous prendrons même le temps de taper quelques lignes de SQL, directement dans QGIS.

QGIS, logiciel SIG open-source et gratuit, se télécharge puis s'installe aisément après avoir vérifié la binarité de votre machine. Nous travaillerons ici sous Windows et sur la version 2.18.12 (Las Palmas).

Cette dernière version déposera un répertoire sur votre bureau. Explorez-le, QGIS est aujourd'hui composite et vous n'avez pas installé que ce seul SIG.

Dans la foulée installez PostgreSQL et son interface de gestion PgAdmin 4, via le pack EnterpriseDB et l'utilitaire StackBuilder. Pensez à bien sélectionner l'installation de PostGIS également. Stackbuilder est toutefois un logiciel qui va s'installer sur votre machine, et que vous pourrez ré-utiliser par la suite.

Le sommaire de droite et la navigation sous le texte vous permettent de vous déplacer dans ce tuto. Les images sont cliquables et contiennent des informations supplémentaires. Les liens de cet article affichent à leur survol des informations supplémentaires (tout comme les jolis boutons de QGIS d'ailleurs). Une page d'actuces pour Postgres vous servira peut-être à travers ce tuto.


Rappels sur les bases de données relationnelles

Dans le cadre de la découverte de QGIS, qui n'est qu'une interface de visualisation/manipulation de données spatiales (GUI, Graphic User Interface), on peut revoir rapidement l'intérêt à passer des tableurs aux bases de données relationnelles.

Ci-dessous l'exemple d'un fichier Excel truffé d'erreur de conception (d'un point de vue BDD s'entend), nommé Mes beaux utilisateurs, contenant des humains, des métiers et des adresses. Celui-ci gagnerait à être divisé en au moins deux tables : users et address. En effet une base applicative doit considérer chaque ligne (chaque enregistrement) comme une occurence propre (une identification, un événement...). Or techniquement ou même dans la vraie vie, une adresse a-t-elle la même valeur qu'un nom ? Sont-ils intimement et éternellement liés ? Non.

Base de données relationnelles

Souvent, l'une des questions à se poser est : quelles sont les informations qualitatives réellement liées aux objets décrits ? Ainsi une adresse peut changer, un nom beaucoup moins.

Quelques intérêts du fonctionnement en bases de données relationnelles : amélioration des performances d'affichage, amélioration des performances de requêtage, minimisation/rationnalisation des doublons, minimisation des champs vides, mises-à-jour en cascade...

Ainsi une BDD applicative (sous-jacente à un site web, une application métier...) peut être vue non pas comme un gigantesque tableau, mais plutôt comme une constellation de petits tableaux reliés entre eux. Et pour les relier, on utilisera des jointures basées sur des champs contenant des valeurs communes (des identifiants, un champ id typiquement).

Profitez du passage à la dimension relationnelle pour acquérir de bonnes pratiques : pas d'espace ni de caractères spéciaux dans les noms d'objets BDD, des noms courts et évocateurs, 1ère ligne contenant les noms de champs...

Exercice

À partir des informations déjà présentes dans ces données, dessinez une 3ème puis une 4ème table relationnelle1.

Plus difficile : imaginez et dessinez une méthode relationnelle permettant de totalement évincer les doublons de la table address2.

1 Une table speciality par exemple, puis une table country.
2 Il s'agit de passer par une table intermédiaire entre les users et les address.


À propos des shapes

Contenus d'un shapeLe format shape est devenu un standard dans les logiciels SIG, c'est le format principal de fichier vecteur que nous utiliserons dans QGIS. Les fichiers shapes sont des fichiers de données spatiales vectorielles (des coordonnées). Par opposition aux rasters, qu'on peut comparer à des images spatialisées.

Téléchargez le shape de la base des communes GeoFla sur le site de l'IGN (Édition 2016 V2.2 France métropolitaine - une archive du fichier utilisé est aussi en PJ de cet article).

Le fichier qui nous intéresse est dans 1_DONNEES_LIVRAISON_2016-06-00236 puis GEOFLA_2-2_SHP_LAMB93_FR-ED161 et enfin le répertoire COMMUNE qui contient 2 shapes.

Un fichier shape est constitué d'un fichier .shp (contient les géométries) et est toujours accompagnés d'autres fichiers mentionnant sa projection (.prj), ses données attributaires(.dbf) et parfois d'autres.

Les données attributaires sont les informations non-spatiales des données, qu'on affichera comme dans un tableur dans QGIS, mais dont le fichier peut aussi être accédé sous le tableur OpenOffice.

Notes : pensez si besoin à demander à Windows d'afficher les extensions des fichiers dans Organiser/Options des dossiers et de recherche/Affichage, puis décochez Masquer les extensions des fichiers dont le type est connu.

Exercice

Ouvrez le fichier attributaire hors SIG, via un tableur puis via un éditeur.

Ouvrez maintenant votre joli shape des communes sous QGIS tel un fichier vecteur (une option de la barre latérale de gauche).


Ouvrir un shape

vecteur1Ouvrez QGIS, qui vous gratifiera sans doute d'une Astuce au démarrage. Par défaut de nombreuses barres de menus sont présentes, dont une verticale à gauche vous permettant d'ouvrir des formats de données, des BDD ou d'éditer des fichiers vecteur (des shapes).

Ouvrez votre shape dézippé (en choisissant le fichier .shp).

Explorez ses données attributaires (après clic-droit sur la couche). vecteur3

Exercice

  • Testez le Zoom, puis le Zoom précédent.
  • Testez les différents modes de sélection géographique (la flèche déroulante du mode Sélection de la barre d'outil).
  • Parvenez à désélectionner.
  • Testez le zoom sur la sélection à partir de la table attributaire. Filtrez la table attributaire sur la sélection.
  • Testez l'identification d'entité.
  • Modifiez la couleur par défaut du shape par la couleur officielle exacte du site du Master. Mettez également un peu de transparence sur la couche et épaississez les contours des entités.
  • Mesurez une distance arbitraire (à main levée).

Le gestionnaire d'extensions

Repérez le Gestionnaire d'extensions, outil pratique par lequel nous pouvons télécharger et installer les nombreux plugins déjà existants pour QGIS. Dans le menu principal, allez dans Extensions/Installer/gérer les extensions. N'hésitez pas à l'explorer, et à installer le plugin Openlayers par exemple.

Repérez l'option Recharger les dépôts, dans Paramètres, si les extensions non-installées n'apparaissent pas. extensions1

 

Exercice

  • Positionnez correctement un fond de carte Google et OSM.
  • Testez l'extension StreetView.
  • Testez l'extension Online routing Mapper.
  • Testez l'extension GeoCoding.

Ouvrir un WMS

wms1

Il y a plusieurs façons d'ajouter des fonds de carte WMS dans un projet QGIS, mais en utilisant l'option Ajouter un WMS (barre latérale de gauche).

Allez chercher le serveur GeoSignal par exemple, ou un serveur IGN, puis ouvrez  les couches Raster France 1/4000000, la couches des Régions, des Autoroutes et des Routes Nationales.

Vous pouvez également taper directement l'URL d'un flux. Essayez avec un WFS de l'IFREMER.

Autrement, si vous avez correctement installé l'extension OpenLayers, vous pouvez appeler une couche Google Maps ou OpenStreetMap via l'onglet Internet/OpenLayers plugin.

wms2


Créer un shape

Fouillez les options disponibles dans la barre latérale de gauche. Créez un shape de type point nommé mes_poi, avec un champ name et un champ resume.

Une fois créé, vous passez en mode Édition sur cette couche grâce au petit crayon, de nouvelles icones d'édition seront disponibles.

De même, crez un shape de type polygone nommé mes_zones ; et un autre de type ligne nommé mes_trajets. shape1


Calcul de champs et classification

Calculer la densité de population des communes dans un nouveau champ, en habitants par km2. Attention le champ Superficie est en hectares.

  • Créez un nouveau champ densite après clic droit sur la couche/Propriétés/Champ.
  • Dans la calculatrice de champ : "POPULATION"  / ( "SUPERFICIE" /100)

Testez les différentes classifications disponibles sur ce nouveau champ densite, dans les Propriétés/Style/Gradué/Mode.

  • Vous pouvez inverser les classifications.
  • Vous pouvez ajouter des classes.
  • Vous pouvez directement modifier les classes en double-cliquant sur les valeurs.

Afin de mieux faire connaissance avec la calcuculatrice de champs, recalculez la surface des communes.

  • Comparez avec le champ Superficie déjà existant.
  • Utilisez les Préférences d'options cartographiques pour modifier vos unités de mesure.

Créer une carte

composeurPour créer une carte, utiliser le composeur d'impression (Dans l'onglet Projets du menu principal).

  • Commencez par ajouter un Nouveau composeur d'impression, et donnez lui un nom. Une sur-fenêtre s'ouvre.
  • Ajoutez ensuite une portion de la carte courante dans le composeur, avec l'onglet Mise en page/Ajouter une carte.


Géo-traitements

Un géo-traitement est une opération sur les géométries, visant le plus souvent à croiser 2 géométries (typiquement, 2 shapes) pour en obtenir une 3ème (générer un nouveau shape des résultats par exemple).

L'onglet Vecteur/Outils de géotraitements vous ménera vers les traitements les plus courants, mais il y en a bien d'autres.

geo traitements

 

N'hésitez pas à explorer et tester les géo-traitements, sur des géométries simples pour commencer et surtout, pour vérifier vos résulats.

Exercice

Téléchargez puis ouvrez sur QGIS les shapes des communes d'Île-et-Vilaine et des Côtes-d'Armor et celui des rivières bretonnes. Calculez la longueur cumulée des rivière en Île-et-Vilaine. Attention piège sur le géo-traitement entre projections différentes.


Accès distants FTP, MySQL et PostGIS

Demandez/vérifiez vos accès distants FTP, MySQL et PostGIS. Prenez bien note de vos mots de passe, des URL d'accès et des logiciels libres associés (PhpMyAdmin, PgMyAdmin, PgAdmin, HeidiSQL...). Notez que pour des raisons de sécurité de l'Université de Cergy, certains ports sont bloqués (via les logiciels par exemple), les bases restent toutefois accessibles via leurs outils d'administration web, même depuis l'Université.


KML et API Google Maps

Exportez vos shapes personnalisés en KML, ouvrez-les dans Google Earth puis affichez-les dans une page web.


PostGIS

Importez le Fichier SQL GMV pour PostGIS dans votre base PostGIS.

Importez un shape dans PostGIS.

  • Utiliser PgAdmin et son plugin d'import.
  • Lisez attentivement les éventuels messages d'erreur !

Créez et éditez une nouvelle table de points.

À partir du SQL que vous avez généré avec la caclculatrice de champs de QGIS, tentez quelques requêtes SQL dans PostGIS.


Requêtes, regroupement et jointure

À partir des données fournies, faites une symbologie sur le nombre de communes par départements. Plusieurs méthodes sont possibles, nous découperons ici chaque étape afin d'explorer le logiciel.

Dans un nouveau projet QGIS (Projet/Nouveau), ouvrez le shape des communes GeoFla et celui des départements d'Ile-de-France. Ajoutez la carte OpenStreetMap et vérifiez la bonne superposition des couches. N'oubliez pas l'option Activer la reprojection à la volée dans l'onglet Projet/Propriétés/SCR si besoin.

Requête attributaire

Tentez de sélectionnez les communes d'Ile-de-France via une simple sélection attributaire. Exportez la sélection en shape.

Requête de regroupement

Installez l'extension Group stats via le Gestionnaire d'extensions, l'icone apparaît disponible près de celui des requêtes spatiales.

Calculez le nombre de communes par département (faites glisser les champs et fonctions). Exportez les résultats en CSV.

Jointure

Explorez votre fichier CSV avec Excel ou OpenOffice, et nettoyez-le en vue d'une utilisation BDD. Ouvrez-le dans QGIS.

Joignez votre fichier du nombre de communes à votre shape des départements d'Ile-de-France (clic-droit sur la couche cible, Propriétés/Jointures). Faites une classification.

Tentez le coup sur PostGIS, en une seule requête SQL !


SQL spatial

Importer le shape IDF dans votre base PostGIS via PGAdmin et son plugin d'import, ou via le fichier SQL fourni

  • UTF-8, colonne géométrique (non-géographique), SRID 27572.
  • Vérifiez les SRID après import (astuces).

Importez le shape des communes GeoFLA dans POstGIS, puis calculer la surface des polygones sur QGIS, puis sur PostGIS

  • Présentez vos résultats en km2.
  • Arrondissez vos résultats.
  • Créez un nouveau champ nommé surface et mettez-le à jour via une requête SQL.

 Importez le fichier des arrêts RATP

  • Colonne géométrique (non-géographique), SRID 4326.
  • Superposez vos départements et vos arrêts de bus sur QGIS. Que constatez-vous ?

 


Requête imbriquée

Sur PostGIS, comptez le nombre d'arrêts de bus par départements franciliens.

Il s'agit d'une fonction d'intersection imbriquée avec une requête de regroupement, mais les SRID de vos tables (équivalent de la projection) sont différents ! Les arrêts de bus sont en 4326 et les départements en 27572.

  •  Vérifiez ou assignez vos SRID (fonction UpdateGeometrySRID).
  • Reprojetez sur QGIS le SRID de l'IDF en 4326.
  • Faites un test en superposant vos nouvelles couches et OpenStreetMap sous QGIS, vos couches doivent parfaitement se superposer, vérifiez quelques arrêts de bus manuellement.
  • Créez dans PostGIS une table des arrêts d'un seul département (fonction st_intersects, dédoublonnez les résultats, n'oubliez pas que cette fonction attend un booléen, utilisez une clause).
  • Créez une vue (view) calculant le nombre d'arrêts de bus par départements en une seule requête SQL.

Analyse et représentation de données

[Attention exercice déjà utilisé dans Introduction pratique au géomarketing, au SQL spatial et à l'isochronie, à modifier ici]

Nous allons calculer à partir de données brutes des statistiques synthétiques sur des participations à des salons professionnels. Il va s'agir de synthétiser de la données événementielle, occurentielle, et de la faire parler.

Le fichier export_commandes liste les commandes effectuées à ce salon. Certains identifiants de clients sont donc en doublons (plusieurs commandes), et certains montants à 0 euros (invités ou autres).

Le fichier export_soft stocke les information sur tous les clients de la société qui organise le salon, dont un grand nombre n’étaient pas présent au congrès.

1) Faires 3 requêtes de regroupement avec relation sur les deux tables :

  • Requête ca_customers pour lister les clients présents, compter leur commandes et sommer leurs montants, ainsi que pour ramener les informations géographiques. Triez des plus grands montants au plus bas.
  • Requête ca_country pour lister les pays d’origine des clients présents, compter les clients par pays et sommer les CA par pays. Triez des plus grands CA au plus bas.
  • Une 3ème requête nommée ca_customers_fr pour lister les départements français des clients présents (faites une recherche sur l'expression extraction de chaîne par exemple), compter les clients par départements et sommer les CA par départements. Triez des plus grands montants au plus bas.

À chaque fois, renommez vos champs de regroupement directement dans les requêtes.

2) Exportez-en des fichiers .txt, puis ouvrez le fichier ca_country.txt sous QGIS. Liez-le avec le shape country et faîtes une thématique sur le CA par pays en cercles proportionnels (création de centroïdes). Jouez avec le Contrôle de l'ordre de rendu des entités.

3) À partir du shape des IRIS, créer un second shape des départements.

  • Création d’un nouveau champ contenant le code département (extraction de chaîne) puis dissolution.
  • Importez et liez votre fichier ca_customers_fr.txt à votre nouveau shape. Faîtes quelques thématiques sur le nombre de clients en surface de couleurs et en symboles proportionnels.

4) Sur PostGIS, importez votre shape des IRIS et votre fichier ca_customers_fr.txt, supprimez le champ stockant le code département des IRIS, puis créez une vue des IRIS dissous sur leur départements d'appartenance (à partir du champ du code postal donc) et les montant des CA par départements.

  • Pour l'import du fichier ca_customers_fr.txt, créez d'abord une table vierge similaire dans PostGIS. Attention aux types de champs et aux options d'import disponibles.
  • Tentez d'affichez vos résulats dans QGIS et/ou exportez vos résultats en shape.

5) Importez les fichiers export_soft et export_commandes dans votre base PostGIS, et tentez de réalisez l'intégralité des étapes du calcul/affichage des CA par départements avec leurs géométries, à partir du seul shape des IRIS et de ces 2 fichiers, en une seule requête SQL.

  • Il s'agit en fait, pour les départements français, de cumuler les calculs des 3 premières étapes dans une seule requête SQL.

 

 

Liens ou pièces jointes
Télécharger ce fichier (arrets_ratp.txt)Fichier SQL arrêts RATP pour PostGIS[Fichier contenant un code SQL d'import dans PostGIS des arrêts RATP - modifier propriétaire]2022 Ko
Accéder à cette adresse URL (http://hg-map.fr/extern/data/shapes/country.zip)Fichier zippé d'un shape des pays du monde[Fichier zippé d'un shape des pays du monde]0 Ko
Télécharger ce fichier (export_commandes.xlsx)Fichier Excel de commandes clients[Données clients brutes "export_commandes", série de commandes par clients, et leurs montants]61 Ko
Télécharger ce fichier (export_soft.xlsx)Fichier Excel clientèle[Fichier clientèle d'exemple, "export_soft", fichier clients, utilisateurs]857 Ko
Télécharger ce fichier (GeoFla_Communes2016.zip)Fichier zippé d\'un shape des communes françaises (2016)[Communes française métropolitaine (base GeoFla - IGN - 2016) ]24153 Ko
Télécharger ce fichier (gmv.txt)Fichier SQL Grande Muraille verte pour PostGIS[Fichier contenant un code SQL d'import dans PostGIS d'une bande tampon de la partie sénégalaise du projet GMV - pensez à modifier le propriétaire avant d'importer]26 Ko
Télécharger ce fichier (IDF.txt)Fichier SQL Île-de-France pour PostGIS[Fichier contenant un code SQL d'import dans PostGIS des département d'Île-de-France - modifier owner avant import]571 Ko
Télécharger ce fichier (IDF.zip)Fichier zippé d\'un shape de l'Île-de-France[Shape départements d'Ile-De-France Lambert II Étendu]96 Ko
Accéder à cette adresse URL (http://hg-map.fr/extern/data/shapes/france/iris.zip)Fichier zippé d'un shape des IRIS[Fichier zippé d'un shape des IRIS]0 Ko
Télécharger ce fichier (mes_kml.zip)Fichier zippé avec 3 KML de test[KML de lignes, points et polygones, pour test Google Earth et API Google Maps]4 Ko
Accéder à cette adresse URL (http://hg-map.fr/extern/data/Natural_Earth_quick_start.zip)Fichier zippé du projet Natural Earth Quickstart Kit[Fichier de test QGGIStutorials, contenant les shapes et les projets QGIS (Arcmap également), avec une série de filtres, symbologies, étiquettes et légendes]0 Ko
Télécharger ce fichier (poi.txt)Fichier SQL d'import d'une table de points[Fichier contenant un code SQL d'import dans PostGIS - modifier propriétaire]2 Ko