Calcul de densité des intersection de rues (QGIS3)

La densité des intersections de rues est une mesure utile pour évaluer la connectivité d’un réseau. Pour calculer cette densité, on extrait les intersections de rues et on les agrège en fonction d’une grille régulière. Cette analyse est généralement utilisée pour le design des systèmes de transports et pour la planification urbaine afin de déterminer la « marchabilité » des quartiers. Grâce à QGIS et au jeu de données global des réseaux routiers fourni par OpenStreetMap, il est facile de calculer et de visualiser la densité des intersections n’importe où dans le monde.

Description de l’exercice

In this tutorial, we will take OpenStreetMap road network data and calculate the street intersection density for the city of Chennai in India.

Autres compétences abordées

  • Comment télécharger les données OpenStreetMap au format shapefile et en extraire celles de notre zone d’intérêt grâce à l’outil Couper.

  • Comment créer des grilles dans QGIS.

Récupérer les données

Pour récupérer les limites de la ville de Chennai, nous allons utiliser les données Opencities. Puis nous récupérerons les données de réseaux routiers indiens via OpenStreetMap Data Extracts.

Télécharger les limites de la ville

  1. Visiter le site web Opencity , puis recherchez « Chennai wards map ».

../../_images/data12.png
  1. Cliquez sur le premier lien et télécharger les données au format KML. Une couche Chennai-wards-2011.kml sera téléchargée.

../../_images/data21.png

Télécharger le réseau routier

  1. Visiter le serveur OpenStreetMap Data Extracts download de GEOFABRIK. Pour ce tutoriel, nous avons besoin des données pour la ville de Chennai en Inde. Cliquez sur Asia.

../../_images/data31.png
  1. Puis dans sub-regions, selectionnez India.

../../_images/data41.png
  1. Recherchez le fichier india-latest-free.shp.zip et cliquez dessus pour le télécharger. Ces données sont aussi disponibles dans d’autres formats en fonction de vos besoins.

../../_images/data51.png
  1. Il s’agit d’un téléchargement lourd qui contient des données pour le pays entier. Décompressez le fichier india-latest-free.shp.zip. Vous obtiendrez de nombreuses couches shapefiles.

../../_images/data61.png

Extraire le réseau routier contenu dans les limites de la ville

  1. Nous allons maintenant couper la couche des réseaux routiers avec notre zone d’intérêt. Ouvrez QGIS et glissez-déposez la couche Chennai-wards-2011.kml.

../../_images/data71.png
  1. Instead of opening a large layer in QGIS, we can directly read it from the disk and clip it. Open the Processing Toolbox and locate the Vector overlay ‣ Clip algorithm. Double-click to open it.

../../_images/data8.png
  1. Pour la Couche source, sélectionnez et cliquez sur Chercher une couche…

../../_images/data9.png
  1. Recherchez le dossier où vous avez enregistré les données OpenStreetMap et sélectionnez gis_osm_roads_free_1.shp. Pour Couche de superposition, sélectionnez New Wards from Oct 2011. Puis pour Découpé, cliquez sur , sélectionnez Enregistrer vers un fichier…, et choisissez le dossier dans lequel vous voulez enregistrer les résultats. Nommer votre fichier chennai_roads.gpkg, et cliquez sur Exécuter.

../../_images/data10.png
  1. Once the processing finishes, a new layer chennai_roads will be loaded in the canvas.

../../_images/data111.png

Par commodité, vous pouvez directement télécharger une copie du jeu de données coupé sur le lien ci-dessous :

Sources des données : [OPENCITIES] [GEOFABRIK]

Procédure

  1. Now both layers used for the calculation will be available, if you have downloaded the data, then locate the Chennai-Wards-2011.kml and chennai_roads.gpkg in Browser, then drag and drop them on the canvas.

../../_images/image1.png
  1. La première étape est d’extraire les intersections de route. Cela peut être effectué en utilisant l’outil intégré Intersections de lignes. Testons-le sur une petite zone pour voir si les résultats sont satisfaisants. Sélectionnez la couche Routes, et utilisez l’outil Sélectionner les entités pour dessiner un rectangle et sélectionner quelques routes.

../../_images/image2.png
  1. Open the Processing Toolbox and locate the Vector overlay ‣ Line intersections algorithm. Double-click to open it.

../../_images/image3.png
  1. Sélectionnez chennai_roads à la fois comme Couche source et Couche d’intersection. Assurez vous de bien cocher les cases Entité(s) sélectionnée(s) uniquement. Puis cliquez sur Exécuter.

../../_images/image4.png
  1. Une nouvelle couche Intersections sera ajoutée. Vous remarquerez que bien que la plupart des points d’intersection soient corrects, il y a des faux positifs. En effet, l’algorithme considère les intersections de chaque segment de ligne comme des intersections valides. Or pour notre analyse, nous avons besoin d’extraire les intersections uniquement lorsque 2 rues ou plus se croisent.

../../_images/image5.png
  1. Remove the Intersections layer and click Deselect features from all layers button to remove the selection. We will now merge all adjacent road segments, so the segments between intersections are merged into a single feature. Open the Processing Toolbox and locate the Vector geometry ‣ Dissolve algorithm. Double-click to open it.

../../_images/image6.png
  1. Sélectionnez chennai_roads comme Couche source. Nommez la Couche regroupée roads_dissolved.gpkg. Cliquez sur Exécuter.

../../_images/image7.png
  1. Tous les segments de route de la couche roads_dissolved résultante sont fusionnés en une seule entité.

../../_images/image8.png
  1. Next, open the Processing Toolbox and locate Vector geometry ‣ Multipart to single parts algorithm. Double-click to open it. Select roads_dissolved layer as the Input layer. Enter roads_singleparts.gpkg as the Single parts output. Click Run.

../../_images/image9.png
  1. The resulting layer roads_singleparts will have all adjacent segments merged, remove the roads_dissolved and chennai_roads layers. Now, open the Processing Toolbox and locate the Vector overlay ‣ Line intersections algorithm. Double-click to launch it.

../../_images/image10.png
  1. Sélectionnez roads_singleparts à la fois comme Couche source et comme Couche d’intersection. Nommer la couche de sortie roads_line_intersections.gpkg. Cliquez sur Exécuter.

../../_images/image11.png

Note

Cette opération est gourmande en calculs et peut prendre beaucoup de temps en fonction de la capacité de traitement de votre ordinateur.

  1. The resulting layer roads_line_intersections now has all intersections correctly identified. But it is still not perfect. Use the Select features by Area tool and select any intersection. You will see that at each intersection there are few duplicate points from adjacent segments. If we use this layer for further analysis, it will result in an inflated number of intersections. Let’s remove duplicates, open the Processing Toolbox and locate the Vector general ‣ Delete duplicate geometries algorithm. Select roads_line_intersections as the Input layer and enter road_intersections.gpkg as the Cleaned output layer. Click Run.

../../_images/image12.png
  1. The new road_intersections layer has the correct number of road intersections extracted from the source layer. Right-click the old road_line_intersections layer and select Remove layer to remove it.

../../_images/image13.png
  1. We will now compute the density of points by overlaying a regular grid and counting points in each grid polygon. We must reproject the data to a projected CRS so we can use linear units of measurements. We can use an appropriate CRS based on the UTM zone where the city is located. You can see UTM Grid Zones of the World map to locate the UTM zone for your city. Chennai falls in the UTM Zone 44N. Open the Processing Toolbox and locate the Vector general ‣ Reproject algorithm. Double click to open it.

../../_images/image14.png
  1. Sélectionnez road_intersections comme Couche source. Recherchez un SCR en cliquant sur l’icône globe à droite du champ SCR cible et sélectionnez EPSG:32664 - WGS 84 / UTM zone 44N. Il s’agit d’un SCR basé sur le système géodésique WGS84 pour la zone UTM 44N. Nommez le fichier Reprojeté road_intersections_reprojected.gpkg. Cliquez Exécuter.

../../_images/image15.png
  1. Une fois le traitement terminé et la couche road_intersections_reprojected ajoutée, faites un clic droit sur la couche et sélectionnez Définir le SCR ‣ Définir le SCR du projet depuis cette couche. Puis supprimez la couche road_intersections.

../../_images/image16.png
  1. Project CRS will be updated in the bottom right of the window. The purpose of this step to ensure that all layers are displayed in the CRS of new layer. We are now ready to create the grid using the road_intersections_reprojected as reference. Open the Processing Toolbox and locate the Vector creation ‣ Create grid algorithm. Double click to open.

../../_images/image17.png
  1. Pour le Type de grille, sélectionnez Rectangle (polygone). Pour Etendue de la grille, cliquez sur le bouton ... et sélectionnez Utiliser l’emprise de la couche ‣ road_intersections_reprojected.

../../_images/image18.png
  1. Pour le SCR de la grille, sélectionnez le SCR du projet. Nous voulons créer une grille de 1km x 1km, choisissez donc 1000 mètres pour Espacement horizontal et pour Espacement vertical. Nommez la Grille obtenue grid.gpkg. Cliquez sur Exécuter.

../../_images/image19.png
  1. The grid layer containing rectangular grid polygons will be created. We can now count the number of points in each polygon, but since our layers are large, this process can take a long time. One way to speed up spatial operations is to use a Spatial Index. Open the Processing Toolbox and locate the Vector general ‣ Create spatial index algorithm. Double click to open it.

../../_images/image20.png
  1. Select grid layer and click Run, now the layer will have a spatial index which can boost the performance of computation with this layer.

../../_images/image21.png
  1. Ouvrez la Boîte à outils de traitements et recherchez l’algorithme Analyse vectorielle –> Compter les points dans les polygones.

../../_images/image22.png
  1. Sélectionnez grid pour Polygones, et road_intersections_reprojected pour Points. Nommez le fichier Compte obtenu grid_count.gpkg. Cliquez sur Exécuter.

../../_images/image23.png
  1. La couche grid_count obtenue possède un attribut NUMPOINTS qui indique le nombre de points d’intersection dans chaque maille. De nombreuses mailles ont 0 point. Pour faciliter l’analyse et la visualisation, nous allons supprimer ces polygones qui ne contiennent pas d’intersections. Ouvrez la Boîte à outils de traitements et recherchez l’algorithme Sélection dans un vecteur ‣ Extraire par attribut.

../../_images/image24.png
  1. Sélectionnez grid_count comme Couche source. Puis sélectionnez NUMPOINTS comme Attribut de sélection, > comme Opérateur et entrez 0 comme Valeur. Nommez le fichier Extrait (attribut) obtenu grid_counts_chennai.gpkg. Cliquez sur Exécuter.

../../_images/image25.png
  1. The resulting layer grid_counts_chennai will have grid polygons over the Chennai city and contains the number of road intersections as an attribute for each polygon. Remove all layers except grid_counts_chennai.

../../_images/image26.png
  1. Let’s clean up the attribute table of our data layer. The preferred method to make any changes to the attribute table is to use a processing algorithm called Refactor Fields, open the Processing Toolbox and locate the Vector table ‣ Refactor Fields algorithm. Double-click to open it. Click on any row in the Field Mapping section to select it. You can hold the Shift key to select multiple rows, select all fields except fid and NUMPOINTS. Click the Delete selected fields button.

../../_images/image27.png
  1. Rename the NUMPOINTS field as intersection_density and save the layer as road_intersection_density.gpkg, click Run.

../../_images/image28.png
  1. Nous allons maintenant éditer le style de cette couche pour visualiser la densité de chaque maille. Sélectionnez la couche road_intersection_density et ouvrez le panneau Style de couche. Sélectionnez le rendu Gradué. Dans Valeurs, sélectionnez intersection_density, une Palette de couleur de votre choix, fixez le nombre de Classes à 7 et cliquez sur Classer.

../../_images/image29.png
  1. In the values enter 0-50, 50-100, 100-150 and so on up to 300 - 350. You have now created a map showing intersection density across the city.

../../_images/image30.png

If you want to report any issues with this tutorial, please comment below. (requires GitHub account)