6.2. Lesson: Analyse Vectorielle
Les données vecteur peuvent également être analysées pour révéler comment différentes entités interagissent les unes avec les autres dans l’espace. Il existe de nombreuses fonctions différentes liées à l’analyse, nous ne les passerons donc pas toutes en revue. Nous allons plutôt poser une question et essayer de la résoudre à l’aide des outils que fournit le QGIS.
Objectif de cette leçon : Poser une question et la résoudre en utilisant les outils d’analyse.
6.2.1. Le processus SIG
Avant de commencer, il serait utile de donner un bref aperçu d’un processus qui peut être utilisé pour résoudre un problème. La marche à suivre est la suivante :
Énoncer le problème
Obtenir les données
Analyser le problème
Présenter les résultats
6.2.2. Le problème
Nous allons commencer le processus en décidant d’un problème à résoudre. Par exemple, vous êtes un agent immobilier et vous recherchez une propriété résidentielle à Swellendam pour des clients dont les critères sont les suivants:
Il doit être dans Swellendam
Elle doit se trouver à une distance raisonnable d’une école (disons 1 km)
Il doit avoir une taille supérieure à 100 mètres carrés
A moins de 50m d’une route principale
A moins de 500m d’un restaurant
6.2.3. Les données
Pour répondre à ces questions, nous allons avoir besoin des données suivantes :
Les propriétés résidentielles (bâtiments) dans la région
Les routes dans et autour de la ville
L’emplacement des écoles et des restaurants
La taille des bâtiments
Ces données sont disponibles par le biais d’OSM, et vous devriez constater que l’ensemble de données que vous avez utilisé tout au long de ce manuel peut également être utilisé pour cette leçon.
Si vous souhaitez télécharger des données à partir d’une autre zone, passez au Introduction Chapter pour lire comment le faire.
Note
Bien que les données OSM en téléchargement ont des champs cohérentes, la couverture et le détail varie. Si vous trouvez que votre région choisie ne contient pas d’informations sur les restaurants, par exemple, vous devriez peut-être choisir une région différente.
6.2.4. Follow Along: Démarrer un projet et obtenir les données
Nous devons d’abord charger les données pour travailler.
Démarrer un nouveau projet QGIS
Si vous le souhaitez, vous pouvez ajouter un fond de carte. Ouvrez le Navigateur et chargez le fond de carte OSM dans le menu tuiles XYZ.
Dans la base de données
training_data.gpkg
Geopackage, vous trouverez la plupart des jeux de données que nous utiliserons dans ce chapitre :buildings
roads
restaurants
schools
Chargez-les, et aussi
landuse.sqlite
.Zoomer sur l’étendue de la couche pour voir Swellendam, South Africa
Avant de poursuivre, nous allons filtrer la couche roads, afin de n’avoir que quelques types de routes spécifiques avec lesquelles travailler.
Certaines routes dans les ensembles de données OSM sont répertoriées comme
unclassified
,tracks
,path``et ``footway
. Nous voulons les exclure de notre ensemble de données et nous concentrer sur les autres types de routes, plus appropriés pour cet exercice.De plus, les données OSM pourraient ne pas être mises à jour partout, et nous exclurons également les valeurs
NULL
.Faites un clic droit sur la couche
roads
et choisissez Filtre….Dans le dialogue qui s’affiche, nous filtrons ces entités avec l’expression suivante: :
"highway" NOT IN ('footway', 'path', 'unclassified', 'track') AND "highway" IS NOT NULL
La concaténation des deux opérateurs
NOT
etIN
exclut toutes les entités qui ont ces valeurs d’attribut dans le champhighway
.IS NOT NULL
combiné avec l’opérateurAND
exclut les routes sans valeur dans le champhighway
.Notez l’icône à côté de la couche roads. Elle vous aide à vous rappeler que cette couche a un filtre activé, de sorte que certaines entités peuvent ne pas être disponibles dans le projet.
La carte avec toutes les données doit ressembler à la suivante :
6.2.5. Try Yourself Convertir le SCR des couches
Comme nous allons mesurer des distances à l’intérieur de nos couches, nous devons changer le CRS des couches. Pour ce faire, nous devons sélectionner chaque couche à tour de rôle, enregistrer la couche dans une nouvelle couche avec notre nouvelle projection, puis importer cette nouvelle couche dans notre carte.
Vous disposez de nombreuses options différentes, par exemple vous pouvez exporter chaque couche comme un jeu de données au format ESRI Shapefile, vous pouvez ajouter les couches à un fichier GeoPackage existant, ou vous pouvez créer un autre fichier GeoPackage et le remplir avec les nouvelles couches reprojetées. Nous allons montrer la dernière option, de sorte que le fichier training_data.gpkg
restera propre. N’hésitez pas à choisir le meilleur flux de travail pour vous-même.
Note
Dans cet exemple, nous utilisons le CRS WGS 84 / UTM zone 34S, mais vous devriez utiliser un CRS UTM qui est plus approprié pour votre région.
Cliquez avec le bouton droit sur la couche roads dans le panneau couches
Cliquez sur Exporter –> Sauvegarder les entités sous…
Dans le dialogue sauvegarder les couches sous, choisissez GeoPackage comme Format.
Cliquez sur … pour le Nom du fichier, et nommez le nouveau GeoPackage
vector_analysis
.Changer le Nom de la couche en
roads_34S
.Remplacer le CRS par WGS 84 / UTM zone 34S
Cliquez sur OK :
Cela va créer la nouvelle base de données GeoPackage et ajouter la couche
roads_34S
.Répétez ce processus pour chaque couche, en créant une nouvelle couche dans le fichier
vector_analysis.gpkg
GeoPackage avec_34S
ajouté au nom original et en supprimant chacune des anciennes couches du projet.Note
Lorsque vous choisissez d’enregistrer une couche dans un GeoPackage existant, QGIS va ajouter cette couche au GeoPackage.
Une fois que vous avez terminé le processus pour toutes les couches, faites un clic droit sur n’importe quelle couche et cliquez sur zoomer jusqu’à l’étendue de la couche pour centrer la carte sur la zone d’intérêt.
Maintenant que nous avons converti les données OSM en une projection UTM, nous pouvons commencer nos calculs.
6.2.6. Follow Along: Analyse du problème : Distances des écoles aux routes
QGIS vous permet de calculer les distances entre n’importe quel objet vecteur.
Assurez-vous que seules les couches
routes_34S
etbuildings_34S
sont visibles (pour simplifier la carte pendant que vous travaillez)Cliquez sur le lien
pour ouvrir le cœur analytique de QGIS. Fondamentalement, tous les algorithmes (pour l’analyse vecteur et raster) sont disponibles dans cette boîte à outils.Nous commençons par calculer la zone autour de
roads_34S
en utilisant l’algorithme tampon. Vous pouvez le trouver dans le groupe .Vous pouvez également taper
tampon
dans le menu de recherche situé dans la partie supérieure de la boîte à outils :Double-cliquez dessus pour ouvrir le dialogue de l’algorithme
Sélectionnez
roads_34S
comme couche entrée, mettez Distance` à 50 et utilisez les valeurs par défaut pour le reste des paramètres.La valeur par défaut de Distance est en mètres car notre jeu de données d’entrée est dans un système de coordonnées projetées qui utilise le mètre comme unité de mesure de base. Vous pouvez utiliser la boîte combinée pour choisir d’autres unités de projection comme les kilomètres, les yards, etc.
Note
Si vous essayez de créer un tampon sur une couche avec un système de coordonnées géographiques, Processing vous avertira et vous proposera de reprojeter la couche dans un système de coordonnées métriques.
Par défaut, traitement crée des couches temporaires et les ajoute au panneau Couches. Vous pouvez également ajouter le résultat à la base de données GeoPackage en
Cliquant sur le bouton … et choisir sauvegarder GeoPackage….
Nommer la nouvelle couche « roads_buffer_50m ».
Enregistrez-le dans le fichier
vector_analysis.gpkg
Cliquez sur Exécuter, puis fermez le dialogue tampon.
Maintenant, votre carte devrait ressembler à peu près à ceci:
Si votre nouvelle couche se trouve en haut de la liste couches, elle obscurcira probablement une grande partie de votre carte, mais cela vous donne toutes les zones de votre région qui se trouvent à moins de 50m d’une route.
Remarquez qu’il existe des zones distinctes dans votre zone tampon, qui correspondent à chaque route individuelle. Pour vous débarrasser de ce problème :
Décochez la couche roads_buffer_50m et recréez le tampon avec dissoudre résultat activé.
Enregistrez la sortie sous le nom de roads_buffer_50m_dissolved.
Cliquez sur executer et fermez le dialogue tampon.
Une fois que vous avez ajouté la couche au panneau couches, il ressemblera à ceci :
Il n’y a maintenant plus de subdivisions inutiles.
Note
La brève aide sur le côté droit du dialogue explique comment l’algorithme fonctionne. Si vous avez besoin de plus d’informations, il vous suffit de cliquer sur le bouton aide dans la partie inférieure pour ouvrir un guide plus détaillé de l’algorithme.
6.2.7. Try Yourself Distance depuis les écoles
Utilisez la même approche qu’en haut et créez un tampon pour vos écoles.
It shall be 1 km
in radius.
Save the new layer in the vector_analysis.gpkg
file as schools_buffer_1km_dissolved
.
Réponse
Your buffer dialog should look like this:
The Buffer distance is 1 kilometer.
The Segments to approximate value is set to 20. This is optional, but it’s recommended, because it makes the output buffers look smoother. Compare this:
To this:
The first image shows the buffer with the Segments to approximate value set to 5 and the second shows the value set to 20. In our example, the difference is subtle, but you can see that the buffer’s edges are smoother with the higher value.
6.2.8. Follow Along: Chevauchement des zones
Nous avons maintenant identifié les zones où la route est à moins de 50 mètres et les zones où il y a une école dans un rayon de 1 km (ligne directe, pas de route). Mais évidemment, nous ne voulons que les zones où ces deux critères sont satisfaits. Pour ce faire, nous devrons utiliser l’outil Intersection. Vous pouvez le trouver dans le groupe dans la boite à outils traitement.
Utilisez les deux couches tampons comme Couche d’entrée et Couche de recouvrement, choisissez
analyse_vectorielle.gpkg
GeoPackage dans Intersection avec Nom de la coucheroad_school_buffers_intersect
. Laissez le reste comme suggéré (par défaut).Cliquez sur Exécuter.
Dans l’image ci-dessous, les zones bleues correspondent aux endroits où les deux critères de distance sont satisfaits.
Vous pouvez enlever les deux couches de tampon et garder seulement celle qui montre où elles se croisent, étant donné que c’est ce que nous voulons vraiment savoir en premier lieu :
6.2.9. Follow Along: Extraire les bâtiments
Maintenant, vous avez la zone où les bâtiments doivent se chevaucher. Ensuite, vous voulez extraire les bâtiments dans cette zone.
Cherchez l’entrée de menu
dans la Boîte à outils traitementSélectionnez
buildings_34S
dans Extrayez les entités de`. Vérifiez intersection dans Où les éléments (prédicat géométrique), sélectionnez la couche d’intersection tampon dans En comparant avec les éléments de `. Enregistrez dans le fichier :file:`vector_analysis.gpkg, et nommez la couchewell_located_houses
.Cliquez sur Executer et fermez le dialogue
Vous constaterez probablement que peu de choses semblent avoir changé. Si c’est le cas, déplacez la couche well_located_houses en haut de la liste des couches, puis zoomez.
Les bâtiments en rouge sont ceux qui correspondent à nos critères, tandis que les bâtiments en vert sont ceux qui n’y correspondent pas.
Vous avez maintenant deux couches séparées et vous pouvez supprimer
buildings_34S
de la liste des couches.
6.2.10. Try Yourself Filtrer davantage nos bâtiments
Nous avons maintenant une couche qui nous montre tous les bâtiments à 1km d’une école et à 50m d’une route. Nous devons maintenant réduire la sélection pour ne montrer que les bâtiments qui sont à 500m d’un restaurant.
En utilisant les processus décrits ci-dessus, créez une nouvelle couche appelée houses_restaurants_500m qui filtre davantage votre couche well_located_houses pour ne montrer que celles qui sont à moins de 500m d’un restaurant.
Réponse
To create the new houses_restaurants_500m layer, we go through a two step process:
First, create a buffer of 500m around the restaurants and add the layer to the map:
Next, extract buildings within that buffer area:
Your map should now show only those buildings which are within 50m of a road, 1km of a school and 500m of a restaurant:
6.2.11. Follow Along: Sélection des bâtiments de la bonne taille
Pour savoir quels bâtiments sont de la bonne taille (plus de 100 mètres carrés), nous devons calculer leurs dimensions.
Sélectionnez la couche houses_restaurants_500m et ouvrez la Calculatrice de champs en cliquant sur le bouton Ouvrir calculatrice champs dans la barre d’outils principale ou dans la fenêtre de la table d’attributs
Sélectionnez créer un nouveau champs, mettez le nom de champ de sortie à
AREA
, choisissez nombre decimal (real) as type de champ sortie, et choisissez$area
dans le groupe .Le nouveau champ
AREA
contiendra la superficie de chaque bâtiment en mètres carrés.Cliquez sur OK. Le champ
AREA
a été ajouté à la fin de la table d’attributs.Cliquez sur le bouton basculer en mode edition pour terminer l’édition, et enregistrez vos modifications lorsque vous y êtes invité.
Dans l’onglet Provider Feature Filter à
des propriétés de la couche, réglez le filtre"AREA >= 100
.Cliquez sur OK.
Votre carte ne doit maintenant vous montrer que les bâtiments qui correspondent à nos critères de départ et qui ont une superficie de plus de 100 mètres carrés.
6.2.12. Try Yourself
Sauvegardez votre solution comme une nouvelle couche, en utilisant pour ce faire l’approche que vous avez apprise ci-dessus. Le fichier doit être enregistré dans la même base de données GeoPackage, sous le nom de solution
.
6.2.13. In Conclusion
En utilisant l’approche de résolution de problèmes des SIG avec les outils d’analyse vecteur de QGIS, vous avez pu résoudre un problème à critères multiples rapidement et facilement.
6.2.14. What’s Next?
Dans la prochaine leçon, nous verrons comment calculer la distance la plus courte le long des routes d’un point à un autre.