Important
La traduction est le fruit d’un effort communautaire auquel vous pouvez vous joindre. Cette page est actuellement traduite à 92.75%.
6.2. Leçon : 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 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:
Elle doit être dans Swellendam
Elle doit se trouver à une distance raisonnable en voiture (disons 1 km) d’une école
Elle doit avoir une surface supérieure à 100 mètres carrés
Elle doit se situer à moins de 50m d’une route principale
Elle doit se situer à 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 les données d’une autre zone, suivez le Chapitre de préparation des données.
Note
Bien que les données OSM aient des champs cohérents, la couverture et le détail varie. Si vous trouvez que votre région ne contient pas d’informations sur les restaurants par exemple, vous devriez peut-être choisir une région différente.
6.2.4. ★☆☆ Pas à pas : 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 l” Explorateur et chargez le fond de carte OpenStreetMap du groupe Tuiles XYZ.
Dans la base de données Geopackage
training_data.gpkg, vous trouverez la plupart des jeux de données que nous utiliserons dans ce chapitre :buildingsroadsrestaurantsschools
Chargez-les ainsi que
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 données OSM sont répertoriées comme
unclassified,tracks,pathetfootway. Nous voulons les exclure de nos 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
roadset choisissez Filtrer….Dans la fenêtre qui s’affiche, nous allons filtrer les 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
NOTetINexclut toutes les entités qui ont ces valeurs d’attribut dans le champhighway.IS NOT NULLcombiné avec l’opérateurANDexclut 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é et 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. ★☆☆ Essayez vous-même : Convertir le SCR d’une couche
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, l’enregistrer avec une 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 l’option qui vous convient le mieux.
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 la fenêtre Enregistrer la couche vectorielle 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 SCR 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 GeoPackage
vector_analysis.gpkgavec_34Sajouté au nom original.Sur macOS, cliquez sur le bouton Remplacer dans la fenêtre qui apparaît pour permettre à QGIS de remplacer le GeoPackage existant.
Note
Lorsque vous choisissez d’enregistrer une couche dans un GeoPackage existant, QGIS ajoutera cette couche aux autres couches présentes dans le Geopackage, s’il n’existe pas déjà une couche du même nom.
Supprimez les anciennes couches du projet
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 sur la(les) couche(s) pour centrer la carte sur la zone d’intérêt.
Maintenant que nous avons converti les données OSM dans une projection UTM, nous pouvons commencer nos calculs.
6.2.6. ★☆☆ Pas à pas : 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_34Setbuildings_34Ssont visibles (pour simplifier la carte pendant que vous travaillez)Cliquez sur 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_34Sen utilisant l’algorithme Tampon. Vous pouvez le trouver dans le groupe .
Vous pouvez également taper
tampondans le menu de recherche situé dans la partie supérieure de la boîte à outils :
Double-cliquez dessus pour ouvrir la fenêtre de l’algorithme
Sélectionnez
roads_34Scomme Couche source, 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 liste déroulante pour choisir d’autres unités 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, le traitement vous avertira et vous proposera de reprojeter la couche dans un système de coordonnées métriques.
Par défaut, le traitement créé des couches temporaires et les ajoute au panneau Couches. Pour ajouter le résultat à la base de données GeoPackage, vous pouvez :
Cliquer sur le bouton … et choisir Enregistrer dans un GeoPackage….
Nommer la nouvelle couche « roads_buffer_50m ».
Enregistrez-le dans le fichier
vector_analysis.gpkg
Cliquez sur Exécuter, puis fermez la fenêtre Tampon.
Maintenant, votre carte devrait ressembler à ceci:
Si votre nouvelle couche se trouve en haut de la liste Couches, elle couvrira 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 Regrouper le résultat activé.
Enregistrez la sortie sous le nom roads_buffer_50m_dissolved.
Cliquez sur Exécuter et fermez la fenêtre Tampon.
Une fois la couche ajoutée au panneau couches, la carte ressemblera à ceci :
Il n’y a maintenant plus de subdivisions inutiles.
Note
La brève aide sur le côté droit de la fenêtre 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. ★☆☆ Essayez vous-même : Distance depuis les écoles
Utilisez la même approche qu’en haut et créez un tampon pour vos écoles.
Il devrait avoir un rayon de 1 km. Enregistrez la couche dans le fichier vector_analysis.gpkg sous le nom schools_buffer_1km_dissolved.
Réponse
Votre fenêtre tampon devrait ressembler à cela.
La Distance est 1 kilomètre.
Pour Segments, vous pouvez indiquer la valeur
20. C’est optionnel mais recommandé car cela permet un tampon plus lisse. Comparez ceci :
À ceci :
La première image montre le tampon avec la valeur de Segments à 5 et la seconde avec la valeur 20. Pour notre exemple la différence est légère, mais vous pouvez voir que les limites de tampon sont plus lisses avec la valeur la plus élevée.
6.2.8. ★☆☆ Pas à pas : Superpositions de 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 (à vol d’oiseau, pas par la 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 Boîte à outils de traitements.
Utilisez les deux couches tampons comme Couche source et Couche de superposition, choisissez le GeoPackage
vector_analysis.gpkgdans Intersection et inscrivezroad_school_buffers_intersectdans Nom de la couche. 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: Extract the Buildings
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 traitement
Sélectionnez
buildings_34Sdans 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
You will probably find that not much seems to have changed. If so, move the
well_located_houseslayer to the top of the layers list, then zoom in.
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_34Sde la liste des couches.
6.2.10. ★★☆ Try Yourself: Further Filter our Buildings
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.
Using the processes described above, create a new layer called
houses_restaurants_500m which further filters your
well_located_houses layer to show only those which are
within 500m of a 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: Select Buildings of the Right Size
Pour savoir quels bâtiments sont de la bonne taille (plus de 100 mètres carrés), nous devons calculer leurs dimensions.
Select the
houses_restaurants_500mlayer and open the Field Calculator by clicking on the
Open Field Calculator button in the main toolbar or in
the attribute table windowSé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$areadans le groupe .
Le nouveau champ
AREAcontiendra la superficie de chaque bâtiment en mètres carrés.Cliquez sur OK. Le champ
AREAa é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 des propriétés de la couche, réglez le filtre Provider Feature Filter à
"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. ★☆☆ Essayez vous-même
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. 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. La suite ?
Dans la prochaine leçon, nous verrons comment calculer la distance la plus courte le long des routes d’un point à un autre.