Localizando la Instalación Más Cercana con Matriz Origen-Destino (QGIS3)

En el tutorial previo, Visualización y Enrutamiento Básico de Red (QGIS3), aprendimos como construir una red y calcular la ruta más corta entre 2 puntos. Podemos aplicar esa técnica para varios tipos diferentes de análisis basado en red. Una de esas aplicaciones es el cálculo Matriz Origen-Destino o Matriz OD. Dado un conjunto de puntos de origen y otro conjunto de puntos destino, podemos calcular la ruta más corta entre cada par de origen-destino y averiguar la distancia/tiempo de viaje entre ellos. Tal análisis es útil para ubicar la instalación más cercana a un punto dado. Por ejemplo, la empresa de logística puede usar este análisis para encontrar el almacen más cercano a sus clientes para optimizar las rutas de entrega. Aquí usaremos el algoritmo Matriz de Distancia del complemento QGIS Network Analysis Toolbox (QNEAT3) para encontrar la instalación de salud más cercana a cada dirección en la ciudad.

Nota

Este tutorial muestra como usar tus propios datos de red para calcular una matriz origen-destino. Si no tienes tus propios datos de red, puedes usar Complemento ORS Tools y el algoritmo ORS Tools ‣ Matriz ‣ Matriz desde Capas para hacer el análisis similar usando datos OpenStreetMap. Vea Análisis de Área de Servicio usando Openrouteservice (QGIS3) para aprender como usar el complemento ORS Tools.

Vista general de la tarea

Tomaremos 2 capas para Washington DC - una con puntos que representan direcciones y otra con puntos que representan instalaciones de salud mental - y averiguaremos la instalación con la menor distancia de viaje para cada dirección.

Otras habilidades que aprenderá

  • Extraer una muestra aleatoria de una capa punto.

  • Usar Capas Virtuales para ejecutar una consulta SQL en una capa QGIS.

Obtener los datos

El gobierno del Distrito de Columbia comparte libremente cientos de conjuntos de datos en el Catálogo de Datos Abiertos.

Descargue las siguientes capas de datos como archivos shape.

Para su comodidad, puede descargar directamente una copia de los conjuntos de datos de los enlaces abajo:

Roadway_Block-shp.zip

Address_Points.zip

Community Based Service Provider.zip

Fuente de Datos: [DCOPENDATA]

Configuración

Visite Complementos ‣ Administrar e Instalar complementos. Seleccione :guilabel:` Todos` Busque el complemento QNEAT3 e instálelo. Clic en Cerrar.

../../_images/setup11.png

Procedimiento

  1. Locate the Community_Based_Service_Providers.zip file, expand it and add Community_Based_Service_Providers.shp to the canvas. We will select only those centres providing facilities to adults. Right-click on the Community_Based_Service_Providers.shp layer and select Filter.

../../_images/1103.png
  1. It will open a Query Builder dialog box. Enter the following query in the :guilabel:` Filter Expression` Click Run.

"PROVIDER_T"  IN ('Adult','Adult & Child')
../../_images/280.png
  1. Next, locate the Roadway_Block.zip file, expand it and add the Roadway_Block.shp. Similarly, locate the Address_Points.zip file, expand it and add the Address_Points.shp. You will see a lot of points around the city. Each point represents a valid address. We will select 1000 points randomly. This technique is called random sampling. Go to Processing ‣ Toolbox.

../../_images/338.png
  1. Busque y localice el algoritmo Selección de Vector ‣ Extracción aleatoria

../../_images/338.png
  1. Seleccione Address_Points como la Capa de Entrada, Number of feature como el Método e, ingrese 1000 en Número/porcentaje de objetos espaciales. En el Extraído (aleatorio) elija el ... y clic Guardar a un archivo. Ahora elija el directorio e ingrese el nombre address_point_subset.shp y clic Ejecutar.

../../_images/517.png

Nota

Como el algoritmo extraerá 1000 puntos aleatorios del conjunto de datos dado, para replicar los puntos exactos usados en este ejercicio puede descargar el archivo de subconjunto que obtuvimos durante la ejecución del algoritmo aquí address_point_subset.zip. Después de descargar, cargue la capa address_point_subset.shp en QGIS.

  1. A new layer address_point_subset will be added to the Layers panel, you can turn off the visibility of Address_Points address points layer. Let’s rename this layer as origin_points. Right-click on the address_point_subset layer and select Rename layer.

../../_images/617.png
  1. Similarly, rename the Adult_Mental_Health_Providers 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/716.png
  1. Localice el algoritmo QNEAT3 ‣ Matrices de distancia ‣ OD Matrix from Layers as Line (m:n). Si no ve este algoritmo en la caja de herramientas, asegúrese que tiene instalado el complemento QNEAT3.

../../_images/816.png
  1. Este algoritmo ayuda a encontrar las distancias a lo largo de la red entre el origen seleccionado y las capas destino. Seleccione Roadway_Block como la Capa de red. Seleccione origin_points como la Capa de puntos Desde y OBJECTID_1 como el Campo ID único de punto. De forma similar, defina destination_points como la Capa de punto Hacia y OBJECTID como el Campo ID único de punto. Defina el Criterio de Optimización como Ruta más corta (optimización de distancia).

../../_images/916.png
  1. As many streets in the network are one-way, we need to set the Advanced parameters to specify the direction. See Visualización y Enrutamiento Básico de Red (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/1023.png
  1. Será agregada una nueva tabla llamada Output OD Matrix al panel Capas. Clic-derecho y seleccione Abrir Tabla de Atributos. Verá que la tabla contiene 13000 filas. Teníamos 13 puntos de origen y 1000 puntos destino - por lo que la salida contiene 13x1000 = 13000 pares de orígenes y destinos. La columna total_cost contiene distancia en metros entre cada punto de origen y cada punto destino.

../../_images/1126.png
  1. For this tutorial, we are interested in only the destination point with the shortest distance. We can create a SQL query to pick the destination with the least total_cost among all destinations. Go to Processing ‣ Toolbox.Search for and locate the Vector general ‣ Execute SQL.

../../_images/1224.png
  1. In Additional input data sources select ... and check the Output OD Matrix and, click OK. Now click the Summation under SQL query. Enter the following query in SQL query dialog box. Enter geometry as the Geometry field and, select LineString as the Geometry type. Click Run.

select origin_id, destination_id, min(total_cost) as shortest_distance, geometry
from input1 group by origin_id
../../_images/1322.png
  1. A new virtual layer SQL Output will be added to the Layers panel. This Layer has the result of our analysis. Nearest service provider for each of the 1000 origin points.

../../_images/1420.png
comments powered by Disqus