Dichtstbijzijnde faciliteit zoeken met Origin-Destination Matrix (QGIS3)

In de vorige handleiding, Basis netwerk visualisatie en routeren (QGIS3), leerden we hoe een netwerk te bouwen en het kortste pad tussen 2 punten te berekenen. We kunnen die techniek ook toepassen voor verschillende typen op netwerken gebaseerde analyses. Een van die toepassingen is om de Origin-Destination Matrix of OD Matrix te berekenen. Gegeven een set van punten van origine en een andere set voor bestemmingspunten kunnen we het kortste pad berekenen tussen elke paar van origine-bestemming en de reisafstand/tijd daartussen berekenen. Een dergelijke analyse is nuttig om de dichtstbijzijnde faciliteit tot een bepaald punt te lokaliseren. Een logistiek bedrijf zou, bijvoorbeeld, deze analyse kunnen gebruiken om de dichtstbijzijnde opslagplaats voor hun klanten te zoeken om bestelroutes te optimaliseren. Hier gebruiken we het algoritme Distance Matrix uit de plug-in QGIS Network Analysis Toolbox (QNEAT3) om de dichtstbijzijnde gezondheidsfaciliteit voor elk adres in de stad te zoeken.

Notitie

Deze handleiding laat zien hoe uw eigen gegevens voor een netwerk te gebruiken om een origin-destination matrix te berekenen. Als u geen gegevens heeft voor een eigen netwerk kunt u de ORS Tools Plugin en het algoritme ORS Tools ‣ Matrix ‣ Matrix from Layers gebruiken om een soortgelijke analyse uit te voeren met behulp van gegevens van OpenStreetMap. Bekijk Analyse Servicegebied met Openrouteservice (QGIS3) om te leren hoe de plug-in ORS Tools te gebruiken.

Overzicht van de taak

We zullen 2 lagen nemen voor Washington DC - een met punten die adressen weergeven en een andere met punten die faciliteiten voor geestelijke gezondheid weergeven - en de faciliteit zoeken met de minste reisafstand vanaf elk adres.

Andere vaardigheden die u zult leren

  • Een willekeurig monster uit een puntenlaag uitnemen.

  • Virtuele lagen gebruiken om een query van SQL uit te voeren op een laag van QGIS.

De gegevens ophalen

De overheid van het district of Columbia deelt gratis honderden gegevenssets in de Open Data Catalog.

Download de volgende gegevenslagen als Shapefiles.

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

Roadway_Block-shp.zip

Address_Points.zip

Community Based Service Provider.zip

Gegevensbron: [DCOPENDATA]

Instellen

Ga naar Plug-ins ‣ Plug-ins beheren en installeren. Selecteer :guilabel:` Alles` om te zoeken naar de plug-in QNEAT3 en installeer die. Klik op Close.

../../_images/setup11.png

Procedure

  1. Zoek het bestand Community_Based_Service_Providers.zip, vergroot het en voeg Community_Based_Service_Providers.shp toe aan het kaartvenster. We zullen alleen die centra selecteren die faciliteiten voor volwassenen verschaffen. Klik met rechts op de laag Community_Based_Service_Providers.shp en selecteer Filter.

../../_images/1133.png
  1. Het zal een dialoogvenster voor de Querybouwer openen. Voer de volgende query in bij de :guilabel:` Filter-expressie` Klik op Uitvoeren.

"PROVIDER_T"  IN ('Adult','Adult & Child')
../../_images/2106.png
  1. Zoek vervolgens naar het bestand Roadway_Block.zip, vergroot het en voeg Roadway_Block.shp toe. Zoek op dezelfde wijze naar het bestand Address_Points.zip, vergroot het en voeg het bestand Address_Points.shp toe. U zult heel veel punten zien in de stad. Elke punt geeft een geldig adres weer. We zullen nu 1000 willekeurige punten selecteren. Deze techniek wordt random sampling (willekeurige monsterneming) genoemd. Ga naar Processing ‣ Toolbox.

../../_images/349.png
  1. Zoek en lokaliseer het algoritme Vector selectie ‣ Willekeurig uitnemen.

../../_images/349.png
  1. Selecteer Address_Points als de Invoerlaag, Number of feature als de Methode en voer in 1000 in het Aantal/percentage objecten. In het veld Uitgenomen (willekeurig) kies de en klik Opslaan als bestand. Kies nu de map en voer als naam in address_point_subset.shp en klik op Uitvoeren.

../../_images/524.png

Notitie

Omdat het algoritme 1000 willekeurige punten uit zal nemen uit de verstrekte gegevensset, om de exacte punten te repliceren voor deze oefening, kunt u hier address_point_subset.zip het bestand met de subset downloaden die we bij het uitvoeren van het algoritme hebben verkregen. Laad, na het downloaden, de laag address_point_subset.shp in QGIS.

  1. Een nieuwe laag address_point_subset zal worden toegevoegd aan het paneel Lagen, u kunt de zichtbaarheid voor de adrespuntenlaag Address_Points uitschakelen. Laten we deze laag hernoemen naar origin_points. Klik met rechts op de laag address_point_subset en selecteer Laag hernoemen.

../../_images/624.png
  1. Similarly, rename the Community_Based_Service_Provider layers representing the health facilities as destination_points. Naming the layers this way makes it easy to identify them in subsequent processing. Further we will open processing toolbox to create the distance matrix using origin and destination layers.

../../_images/723.png
  1. Zoek naar het algoritme QNEAT3 ‣ Distance matrices ‣ OD Matrix from Layers as Line (m:n). Als u dit algoritme niet ziet in de Toolbox, overtuig u er dan van dat u de plug-in QNEAT3 hebt geïnstalleerd.

../../_images/823.png
  1. This algorithm helps find the distances along with the network between selected origin and destination layers. Select Roadway_Block as the Network layer. Select origin_points as the From-Points layer and OBJECTID as the Unique Point ID field. Similarly, set destination_points as the To-Points Layer and OBJECTID as the Unique Point ID field. Set the Optimization Criterion as Shortest Path (distance optimization).

../../_images/923.png
  1. As many streets in the network are one-way, we need to set the Advanced parameters to specify the direction. See Basis netwerk visualisatie en routeren (QGIS3) for more details on how these attributes are structured. We also have an option to select geometry style of the generated matrix. We are having a road network with direction information so we can generate matrix by folling the route. Choose Matrix geometry follows routes. Choose SUMMARYDIR as the Direction field. Enter OB as the Value for the forward direction, IB as the Value for backward direction, and BD as the Value for the both direction. Set the Topology tolerance as 0.0000150. Keep other options to their default values and click Run.

../../_images/1030.png
  1. A new table layer called Output OD Matrix will be added to the Layers panel. Right-click and select Open Attributes Table. You will see that the table contains 67000 rows. We had 67 origin points and 1000 destination points - so the output contains 67x1000 = 67000 pairs of origins and destination. The total_cost column contains distance in meters between each origin point to every destination point.

../../_images/1134.png
  1. Voor deze handleiding zijn we alleen geïnteresseerd in het bestemmingspunt met de kortste afstand. We kunnen een query voor SQL maken om de bestemming met de minste total_cost uit alle bestemmingen te kiezen. Ga naar Processing ‣ Toolbox. Zoek naar en lokaliseer het algoritme Vector algemeen ‣ Execute SQL.

../../_images/1231.png
  1. In Databronnen voor invoer selecteer ... en selecteer Output OD Matrix en, klik op OK. Klik nu in Sommeren onder SQL query. Voer de volgende query in het dialoogvak SQL query in. Voer geometry in als het Geometrie-veld en selecteer Lijn als het Geometrie-type. Klik op Run.

select origin_id, destination_id, min(total_cost) as shortest_distance, geometry
from input1 group by origin_id
../../_images/1329.png
  1. Een nieuwe virtuele laag SQL-uitvoer zal worden toegevoegd aan het paneel Lagen. Deze laag bevat de resultaten van onze analyse. De dichtstbijzijnde faciliteit voor elk van de 1000 punten van origine.

../../_images/1427.png

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)