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 Alles om te zoeken naar de plug-in QNEAT3 en installeer die. Klik op Sluiten.

../../_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 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, Aantal objecten 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. Hernoem op soortgelijke wijze de lagen Community_Based_Service_Provider die de faciliteiten voor gezondheidszorg weergeven als destination_points. Hernoemen van de lagen op deze manier maakt het gemakkelijker ze later in de voortdurende verwerking te identificeren. Verder zullen we de Toolbox van Processing openen om de afstandsmatrix te maken met de lagen voor origine en bestemming.

../../_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. Dit algoritme helpt bij het zoeken naar de afstanden langs het netwerk tussen geselecteerde lagen voor origine en bestemming. Selecteer Roadway_Block als de Network layer. Selecteer origin_points als de From-Points layer en OBJECTID als de Unique Point ID field. Stel op dezelfde manier destination_points in als de To-Points Layer en OBJECTID als het Unique Point ID field. Stel Optimization Criterion in op 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.000150. Keep other options to their default values and click Run.

../../_images/1030.png
  1. Een nieuwe tabellaag, genaamd Output OD Matrix, zal worden toegevoegd aan het paneel Lagen. Klik met rechts en selecteer Attributentabel openen. U zult zien dat de tabel 67000 rijen bevat. We hadden 67 punten van origine en 1000 bestemmingspunten - dus de uitvoer bevat 67x1000 = 67000 paren voor origine en bestemming. De kolom total_cost bevat de afstand in meters van elk punt van origine tot elk bestemmingspunt.

../../_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)