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 Analyse Servicegebied met Openrouteservice (QGIS3) om te leren hoe de plug-in ORS Tools te gebruiken.
gebruiken om een soortgelijke analyse uit te voeren met behulp van gegevens van OpenStreetMap. BekijkOverzicht 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:
Community Based Service Provider.zip
Gegevensbron: [DCOPENDATA]
Instellen¶
Ga naar Close.
. Selecteer :guilabel:` Alles` om te zoeken naar de plug-in QNEAT3 en installeer die. Klik opProcedure¶
Zoek het bestand
Community_Based_Service_Providers.zip
, vergroot het en voegCommunity_Based_Service_Providers.shp
toe aan het kaartvenster. We zullen alleen die centra selecteren die faciliteiten voor volwassenen verschaffen. Klik met rechts op de laagCommunity_Based_Service_Providers.shp
en selecteer Filter.
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')
Zoek vervolgens naar het bestand
Roadway_Block.zip
, vergroot het en voegRoadway_Block.shp
toe. Zoek op dezelfde wijze naar het bestandAddress_Points.zip
, vergroot het en voeg het bestandAddress_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 .
Zoek en lokaliseer het algoritme
.
Selecteer
Address_Points
als de Invoerlaag,Number of feature
als de Methode en voer in1000
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 inaddress_point_subset.shp
en klik op Uitvoeren.
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.
Een nieuwe laag
address_point_subset
zal worden toegevoegd aan het paneel Lagen, u kunt de zichtbaarheid voor de adrespuntenlaagAddress_Points
uitschakelen. Laten we deze laag hernoemen naarorigin_points
. Klik met rechts op de laagaddress_point_subset
en selecteer Laag hernoemen.
Similarly, rename the
Community_Based_Service_Provider
layers representing the health facilities asdestination_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.
Zoek naar het algoritme
. Als u dit algoritme niet ziet in de Toolbox, overtuig u er dan van dat u de plug-in QNEAT3 hebt geïnstalleerd.
This algorithm helps find the distances along with the network between selected origin and destination layers. Select
Roadway_Block
as the Network layer. Selectorigin_points
as the From-Points layer andOBJECTID
as the Unique Point ID field. Similarly, setdestination_points
as the To-Points Layer andOBJECTID
as the Unique Point ID field. Set the Optimization Criterion asShortest Path (distance optimization)
.
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
. ChooseSUMMARYDIR
as the Direction field. EnterOB
as the Value for the forward direction,IB
as the Value for backward direction, andBD
as the Value for the both direction. Set the Topology tolerance as0.0000150
. Keep other options to their default values and click Run.
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. Thetotal_cost
column contains distance in meters between each origin point to every destination point.
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 . Zoek naar en lokaliseer het algoritme .
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. Voergeometry
in als het Geometrie-veld en selecteerLijn
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
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.
If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)