Dichtheid van straatkruisingen berekenen (QGIS3)

Dichtheid van straatkruisingen is een betekenisvolle meting van de verbondenheid van een netwerk. Men kan straatkruisingen van een normaal raster uitnemen en samenvoegen om de dichtheid te berekenen. Deze analyse wordt gewoonlijk gebruikt bij het ontwerpen van vervoer als ook bij stedelijke ontwikkeling voor het bepalen van het doorlopen van buurten. Met de beschikbaarheid van een globale gegevensset voor netwerken van straten uit OpenStreetMap en QGIS, kunnen we eenvoudig de dichtheid van kruisingen berekenen en visualiseren voor elk deel van de wereld.

Overzicht van de taak

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

Andere vaardigheden die u zult leren

  • Hoe de gegevens van OpenStreetMap als shapefiles te downloaden en te clippen naar uw gebied van interesse.

  • Hoe rasters te maken in QGIS.

De gegevens ophalen

We zullen de gegevens gebruiken uit opencities om de stadsgrenzen voor Chennai te verkrijgen en dan het netwerk van straten vanuit OpenStreetMap Data Extracts voor India.

De stadsgrenzen downloaden

  1. Ga naar de website opencity en zoek naar “Chennai wards map”.

../../_images/data14.png
  1. Klik op de eerste link en download de gegevens in de indeling KML. Een laag Chennai-wards-2011.kml zal worden gedownload.

../../_images/data22.png

Het netwerk van straten downloaden

  1. Ga naar de server OpenStreetMap Data Extracts download van GEOFABRIK. Voor deze handleiding hebben we de gegevens nodig van de stad Chennai in India. Klik op Asia.

../../_images/data32.png
  1. Selecteer dan in sub-regionsIndia.

../../_images/data42.png
  1. The .shp.zip file for the Southern Zone is the file we are looking for. Click on the link to download.

../../_images/data52.png
  1. This is a large download containing an extract of data for the entire country. Unzip the southern-zone-latest-free.shp.zip. You will get many shapefile layers.

../../_images/data62.png

Het netwerk van straten clippen naar de stadsgrenzen

  1. We zullen nu de laag met wegen op landniveau clippen tot ons interessegebied. Open QGIS en sleep Chennai-wards-2011.kml naar het kaartvenster en zet het neer.

../../_images/data72.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/data81.png
  1. Selecteer, in de Invoerlaag, de en klik op Bladeren naar laag…

../../_images/data91.png
  1. Navigeer naar de map waar u de gegevens van OpenStreetMap hebt gedownload en selecteer gis_osm_roads_free_1.shp. Kies, in de Overleglaag, New Wards from Oct 2011. Klik dan op in Geclipt en selecteer Opslaan als bestand…, blader naar de map waar u het resultaat wilt opslaan, voer als naam in chennai_roads.gpkg, en klik op Uitvoeren.

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

../../_images/data112.png

Voor het gemak kunt u direct een kopie van de geclipte gegevensset downloaden vanaf de link hieronder:

Gegevensbron: [OPENCITIES] [GEOFABRIK]

Procedure

  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. De eerste taak is om de kruisingen van wegen uit te nemen. Dit kan worden gedaan met het ingebouwde gereedschap Kruisingen van lijnen. Laten we dit eerst testen op een kleine subset om te zien of de resultaten voldoen. Selecteer de laag met wegen en gebruik het gereedschap Objecten selecteren per gebied of een enkele klik om een rechthoek te tekenen en een aantal wegen te selecteren.

../../_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. Selecteer chennai_roads als zowel Invoerlaag als Intersectie van laag. Zorg er voor om Alleen geselecteerde objecten. Klik op Uitvoeren.

../../_images/image4.png
  1. Een nieuwe laag Kruisingen zal worden toegevoegd. Het zal u opvallen dat, waar de meeste kruisingspunten correct zijn, er toch enkele valse positieven zijn. Dat komt omdat het algoritme kruisingen van elk lijnsegment als een geldige kruising beschouwt. Maar voor onze analyse moeten we alleen de kruisingen uitnemen voor 2 of meer straten die elkaar rkuisen.

../../_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. Selecteer chennai_roads als de Invoerlaag. Voer de naam voor de uitvoerlaag van Samensmelten in als roads_dissolved.gpkg. Klik op Uitvoeren.

../../_images/image7.png
  1. De resulterende laag roads_dissolved bevat alle wegsegmenten, samengevoegd tot één enkel object.

../../_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. Selecteer roads_singleparts als zowel de Invoerlaag als de Intersectie van laag. Noem de uitvoer Kruisingen roads_line_intersections.gpkg. Klik op Uitvoeren.

../../_images/image11.png

Notitie

Dit is een, computertechnisch gezien, intensieve bewerking en zou enige tijd kunnen vergen, afhankelijk van de verwerkingscapaciteit van uw computer.

  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. Select road_intersections as the Input layer. Search by clicking the globe icon next to Target CRS and select EPSG:32644 - WGS 84 / UTM zone 44N. This is a CRS based on the WGS84 datum for the UTM Zone 44N. Enter the Reprojected output layer as road_intersections_reprojected.gpkg. Click Run.

../../_images/image15.png
  1. Als de verwerking is voltooid en de laag road_intersections_reprojected is toegevoegd, klik met rechts en selecteer Laag-CRS ‣ Project CRS van laag overnemen. Verwijder de laag 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. Selecteer Type raster als Rechthoek (polygoon). Klik op de knop in Grid-bereik en selecteer Uit laag berekenen ‣ road_intersections_reprojected.

../../_images/image18.png
  1. Selecteer het project-CRS als het CRS raster. We willen een raster maken van 1km x 1km, dus stel beide Horizontale afstand en Verticale afstand in op 1000 meter. Sla de uitvoerlaag Grid op als grid.gpkg. Klik op Uitvoeren.

../../_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. Open de Toolbox van Processing en zoek naar het algoritme Vector analyse ‣ Punten in polygonen tellen.

../../_images/image22.png
  1. Selecteer grid als de laag Polygonen en road_intersections_reprojected als de laag Punten. Sla de uitvoerlaag Aantal op als grid_count.gpkg. Klik op Uitvoeren.

../../_images/image23.png
  1. De resulterende laag grid_count zal een attribuut NUMPOINTS hebben dat het aantal kruispunten binnen elke rasterpolygoon zal bevatten. Er zijn veel rasterpolygonen met 0 punten. Het zou onze analyse en visualisatie helpen om rasterpolygonen te verwijderen die geen kruisingen bevatten. Open de Toolbox van Processing en zoek naar het algoritme Vector selectie ‣ Uitnemen op attribuut.

../../_images/image24.png
  1. Selecteer grid_count als de Invoerlaag, en selecteer NUMPOINTS in Attribuut selecteren, > in Operator en voer 0 als de Waarde. Sla de uitvoerlaag Uitgenomen (attribuut) op als grid_counts_chennai.gpkg. Klik op Uitvoeren.

../../_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. Laten we deze laag opmaken om de dichtheid van elke rasterpolygoon te bekijken. Selecteer de laag road_intersection_density en klik op Paneel Laag opmaken openen. Selecteer de renderer Gradueel, en selecteer in Waarde Intersection Density, een Kleurverloop van uw keuze, stel de classes in op 7 en klik op Classificeren.

../../_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 give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)