Les données vectorielles peuvent aussi être analysées pour révéler comment les différentes entités interagissent entre elles dans l’espace. Il existe beaucoup de fonctions liées à l’analyse dans les SIG, ainsi nous n’allons pas toutes les explorer. Nous allons plutôt poser une question et essayer de la résoudre en utilisant les outils que QGIS prévoit.
Objectif de cette leçon : Poser une question et la résoudre en utilisant les outils d’analyse.
Avant de commencer, il serait utile de donner un bref aperçu d’un processus qui peut être utilisé pour résoudre les problèmes en SIG. Les étapes à suivre à ce sujet sont :
Énoncer le problème
Obtenir les données
Analyser le problème
Présenter les résultats
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 en Swellendam.
Elle doit être à une distance raisonnable en voiture (disons 1km) d’une école
Elle doit avoir une taille de plus de 100m²
A moins de 50m d’une route principale
A moins de 500m d’un restaurant.
Pour répondre à ces questions, nous aurons besoin des données suivantes:
Les propriétés résidentielles (constructions) dans le périmètre,
Les routes dans et autour de la ville,
La localisation des écoles et des restaurants,
La taille des constructions.
Toutes ces données sont disponibles via OSM et vous pourriez trouver que le jeu de données que vous utilisez depuis le début de ce manuel peut aussi l’être pour cette leçon. Toutefois, afin de nous assurer que nous avons toutes les données requises, nous allons re-télécharger les données depuis OSM à l’aide de l’outil de téléchargement de données OSM intégré à QGIS.
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.
Démarrez un nouveau projet QGIS.
Sauvegardez les données sous osm_data.osm dans votre dossier exercise_data.
Sélectionnez osm_data.osm et cliquez sur Ouvrir
Dans la fenêtre qui s’ouvre, sélectionnez toutes les couches, à l’exception de other_relations et multilinestrings:
Les données OSM seront importées en couches séparées dans votre carte.
Les données que vous venez de télécharger de l’OSM sont dans un système de coordonnées géographiques, WGS84, qui utilise des coordonnées latitudinales et longitudinales, comme vous l’avez vu dans la leçon précédente. Vous avez également appris que pour calculer des distances en mètres, nous devons travailler avec un système de coordonnées projeté. Commencez par changer le système de coordonnées de votre projet en un SCR adéquat pour vos données, dans le cas de Swellendam, WGS 84 / UTM zone 34S :
Ouvrez la boîte de dialogue Propriétés du projet, sélectionnez SCR et déroulez la liste pour trouver WGS 84 / UTM zone 34S.
Cliquez sur OK.
Nous devons maintenant extraire l’information dont nous avons besoin pour le jeu de données OSM. Nous avons besoin des couches représentant toutes les maisons, les écoles, les restaurants et les routes de la région. Cette information se trouve dans la couche multipolygons et peut être extraite en utilisant les informations dans sa Table des attributs. Nous commencerons avec la couche schools :
Faites un clic droit sur la couche multipolygons dans la :guilabel:`Layers list et ouvrez les Propriétés de la couche.
Rendez-vous sur l’onglet Général.
Sous Sous-ensemble de la couche cliquez sur le bouton [Constructeur de requêtes] pour ouvrir la boîte de dialogue Constructeur de requêtes.
Dans Champs à gauche dans cette boîte de dialogue descendez jusqu’à ce que vous voyiez le champ amenity.
Cliquez dessus une fois.
Cliquez sur le bouton Tout en-dessous de la liste Valeurs:
Maintenant, nous devons dire à QGIS de ne nous montrer que les polygones dont la valeur amenity est égale à school.
Double-cliquez sur le mot amenity dans la liste Champs.
Regardez ce qu’il se passe dans le champ Expression spécifique de filtre du prestataire ci-dessous.
Le mot "amenity" a apparu. Pour construire le reste de la commande :
Cliquez sur le bouton = (sous Opérateurs).
Double-cliquez sur la valeur school dans la liste Valeurs.
Cliquez sur OK deux fois.
Cela va filtrer la couche OSM multipolygons pour montrer seulement les écoles dans votre région. Vous pouvez maintenant soit :
Renommez la couche OSM filtrée en schools et réimportez la couche multipolygons depuis osm_data.osm, OU
Duppliquez la couche filtrée, renommez la copie, effacez le Constructeur de requête et créez votre nouvelle requête dans le Constructeur de requêtes.
En utilisant la technique ci-dessus, utilisez l’outil Constructeur de requêtes pour extraire les données restantes pour créer les couches suivantes :
roads (de la couche OSM lines)
restaurants (de la couche OSM multipolygons)
houses (de la couche OSM multipolygons)
Vous pouvez réutiliser la couche roads.shp que vous avez créée dans les leçons précédentes.
Sauvegardez votre carte sous analysis.qgs, dans exercise_data (cette carte sera utilisée dans de prochains modules).
Dans votre gestionnaire de fichier de votre système d’exploitation, créez un nouveau dossier sous exercise_data et appelez-le residential_development. C’est ici que vous sauvegardez les jeux de données qui seront les résultats des fonctions d’analyse.
Quelques-unes des routes dans le jeu de données OSM sont listées comme unclassified, tracks, path et footway. Nous voulons les exclure de notre jeu de données des routes.
Ouvrez le Constructeur de requête pour la couche roads, cliquez sur Effacer et construisez la requête suivante :
"highway" != 'NULL' AND "highway" != 'unclassified' AND "highway" != 'track' AND "highway" != 'path' AND "highway" != 'footway'
Vous pouvez soit utiliser l’approche ci-dessus, où vous double-cliquez sur les valeurs et cliquez sur les boutons, ou vous pouvez copier et coller la commande ci-dessus.
Cela doit immédiatement réduire le nombre de routes sur votre carte :
Parce que nous allons mesurer des distances dans nos couches, nous devons changer le SCR des couches. Pour faire cela, nous devons sélectionner chaque couche l’une après l’autre, sauvegardez la couche dans un nouveau shapefile avec notre nouvelle projection, puis importer cette nouvelle couche dans notre carte.
Note
Dans cet exemple, nous utilisons le SCR WGS 84 / UTM zone 34S, mais vous pouvez utiliser un SCR UTM qui est plus approprié pour votre région.
Faites un clic droit sur la couche roads dans l’onglet Couches.
Cliquez sur Sauvegarder sous...
Dans la boîte de dialogue Sauvegarder le vecteur sous, choisissez les paramètres suivants et cliquez sur Ok (en étant sûr d’avoir sélectionné Ajouter les fichiers sauvegardés à la carte) :
Une nouvelle couche shapefile sera créée et ajoutée à la carte.
Note
Si vous n’avez pas coché Activer la projection ‘à la volée’ ou les paramètres Activer automatiquement la projection à la volée si les couches ont des SCR différents (voir leçon précédente), vous ne pourrez pas voir les nouvelles couches que vous venez d’ajouter à la carte. Dans ce cas, vous pouvez focaliser la carte sur une des couches en faisant un clic droit sur une couche et en cliquant sur Zoomer sur la couche, ou juste en activant pour une des couches les options mentionnées ‘à la volée’.
Supprimez l’ancienne couche roads.
Répétez ce processus pour chaque couche, en créant un nouveau shapefile et une couche avec “_34S” appondu au nom originale et enlevez chacune des anciennes couches.
Une fois que vous avez terminé ce processus pour chaque couche, faites un clic droit sur une couche et cliquez sur Zoom sur la couche pour focaliser 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.
QGIS vous permet de calculer des distances depuis tout objet vecteur.
Soyez sûr que seules les couches roads_34S et houses_34S sont visibles, pour simplifier la carte pendant que vous travaillez.
Cliquez sur l’outil Vecteur ‣ Outils de géotraitement ‣ Tampon(s):
Une nouvelle fenêtre s’ouvre.
Configurez-la comme ceci :
La Distance tampon est en mètre car notre jeu de donnée source est dans un Système de Coordonnées Projeté qui utilise des mètres comme unité de mesure de base. C’est pourquoi nous devons utiliser des données projetées.
Sauvegardez la couche résultante sous exercise_data/residential_development/ comme roads_buffer_50m.shp.
Cliquez sur OK et il créera une zone tampon.
Lorsqu’on vous demande s’il faut “ajouter la nouvelle couche à la Légende”, cliquez sur Oui (La “Légende” indique la Liste des couches).
Fermez la fenêtre Tampon(s).
Maintenant, votre carte devrait ressembler à peu près à ceci:
Si votre nouvelle couche est tout en haut de la Légende de la carte, elle obscurcira probablement une grande partie de votre carte, mais cela nous donne toutes les zones de région qui sont à 50m d’une route.
Cependant, vous remarquerez qu’il y a des zones distinctes à l’intérieur de notre tampon, qui correspondent à toutes les routes individuelles. Pour se débarrasser de ce problème, enlevez la couche et recréez le tampon en utilisant les paramètres indiqués ici :
Notez que nous avons maintenant coché la case Union des résultats du tampon.
Sauvegardez la sortie sous le même nom qu’avant (cliquez sur Oui lorsqu’on vous demande votre permission pour écraser l’ancien fichier).
Cliquez sur OK et fermez à nouveau la boîte de dialogue Tampon(s).
Une fois que vous avez ajouté la couche à la Légende de la carte, ça ressemblera à cela :
Il n’y a maintenant plus de subdivisions inutiles.
Utilisez la même approche qu’en haut et créez un tampon pour vos écoles.
Il doit être de 1 km de rayon, et sauvegardé dans le répertoire commun sous schools_buffer_1km.shp.
Maintenant que nous avons des zones où les routes sont à 50 mètres de distance et où il y a une école à moins d‘1 km (à vol d’oiseau, pas par la route). Mais évidemment, nous ne voulons que les zones où ces deux critères sont respectés. Pour faire cela, nous devrons utiliser l’outil Intersection. Cherchez-le sous Vecteur ‣ Outils de géotraitement ‣ Intersection. Configurez-le comme suit :
Les deux couches source sont les deux tampons ; l’emplacement de la sauvegarde est comme d’habitude ; et le nom du fichier est road_school_buffers_intersect.shp. Une fois que c’est configuré comme ceci, cliquez sur OK et ajoutez la couche à la Légende de la carte quand demandé.
Dans l’image ci-dessous, les zones bleues nous montrent où les deux critères de distance sont satisfaits en même temps !
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 :
Vous avez maintenant la région que les bâtiments doivent partiellement recouvrir. Ensuite, vous voulez sélectionner les bâtiments dans la zone.
Cliquez sur l’entrée du menu Vecteur ‣ Outils de recherche ‣ Sélection par localisation. Une fenêtre apparaîtra.
Configurez-la comme ceci :
Cliquez sur OK puis sur Fermer.
Vous trouverez sans doute que peu de choses semblent avoir changé. Si oui, déplacez la couche school_roads_intersect tout en haut de la légende de la carte, puis faites un zoom avant :
Les bâtiments en surbrillance jaune sont ceux qui remplissent nos critères et sont sélectionnés, alors que les bâtiments en vert sont ceux qui ne le sont pas. Nous pouvons maintenant sauvegarder les bâtiments sélectionnés dans une nouvelle couche.
Faites un clic droit sur la couche houses_34S dans la Légende de la carte.
Sélectionnez Sauvegarder la sélection sous....
Configurez la boîte de dialogue comme ceci :
Le nom du fichier est well_located_houses.shp.
Cliquez sur OK.
Vous avez désormais la sélection dans une couche séparée et pouvez enlever la couche houses_34S.
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 nommée houses_restaurants_500m qui filtre davantage votre couche well_located_houses pour ne montrer que les bâtiments qui sont à 500m d’un restaurant.
Pour voir quels bâtiments sont de la bonne taille (plus de 100 mètres carrés), nous devons d’abord calculer leur taille.
Ouvrez la table attributaire de la couche houses_restaurants_500m.
Entrez en mode d’édition et ouvrez la calculatrice de champ.
Configurez-la comme ceci :
Si vous ne trouvez pas AREA dans la liste, essayez donc de créer un nouveau champ comme vous l’avez fait dans la précédente leçon de ce module.
Cliquez sur OK.
Défilez vers la droite de la table attributaire ; votre champ AREA a maintenant des aires en mètres pour tous les bâtiments dans votre couche houses_restaurants_500m.
Cliquez à nouveau sur le bouton du mode d’édition pour finir l’édition, et sauvegardez vos modifications quand on vous le demande.
Construisez une requête comme précédemment dans cette leçon :
Cliquez sur OK. Votre carte devrait maintenant ne vous montrer que ces bâtiments qui remplissent nos critères de départ et qui ont une taille de plus de 100m carrés.
Sauvegardez votre solution dans une nouvelle couche, en utilisant l’approche que vous avez apprise ci-dessus pour le faire. Le fichier devrait être sauvé sous le répertoire courant, avec le nom solution.shp.
En utilisant l’approche de résolution de problèmes SIG ainsi que les outils QGIS d’analyse vectorielle, vous avez été capable de résoudre rapidement et facilement un problème avec de multiples critères.
Dans la prochaine leçon, nous verrons comment calculer la plus petite distance par la route d’un point à un autre.