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

Proveedor de Servicios Comunitarios.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. Localice el archivo Community_Based_Service_Providers.zip, expándalo y añada Community_Based_Service_Providers.shp al lienzo. Seleccionaremos sólo los centros que prestan servicios a adultos. Haga clic con el botón derecho en la capa Community_Based_Service_Providers.shp y seleccione Filtro.

../../_images/1133.png
  1. Se abrirá un cuadro de diálogo :guilabel: Constructor de consultas. Introduzca la siguiente consulta en Expresión de filtro Haga clic en Ejecutar.

"PROVIDER_T"  IN ('Adult','Adult & Child')
../../_images/2106.png
  1. A continuación, localiza el archivo Roadway_Block.zip, expándelo y añade el archivo Roadway_Block.shp. Del mismo modo, localiza el archivo Address_Points.zip, expándelo y añade el archivo Address_Points.shp. Verás un montón de puntos alrededor de la ciudad. Cada punto representa una dirección válida. Seleccionaremos 1000 puntos al azar. Esta técnica se llama muestreo aleatorio. Vaya a :menuselección:`Procesos --> Caja de herramientas`.

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

../../_images/349.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/524.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. Se añadirá una nueva capa address_point_subset al panel Capas, puede desactivar la visibilidad de la capa de puntos de dirección Address_Points. Vamos a renombrar esta capa como origin_points. Haga clic con el botón derecho en la capa address_point_subset y seleccione Renombrar capa.

../../_images/624.png
  1. Del mismo modo, cambie el nombre de las capas Community_Based_Service_Provider que representan los centros sanitarios por destination_points. Esta forma de nombrar las capas facilita su identificación en el procesamiento posterior. A continuación, abriremos la caja de herramientas de procesamiento para crear la matriz de distancias utilizando las capas de origen y destino.

../../_images/723.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/823.png
  1. Este algoritmo ayuda a encontrar las distancias junto con la red entre las capas de origen y destino seleccionadas. Seleccione Roadway_Block como Capa de red. Seleccione origin_points como :guilabel: Capa de puntos de origen y OBJECTID como Campo de ID de punto único. Del mismo modo, establezca puntos_destino como la capa Hacia-Puntos y OBJECTID como el campo Identificador de punto único. Establezca Criterio de optimización como Sendero más corto (optimización de la distancia).

../../_images/923.png
  1. Como muchas calles de la red son unidireccionales, necesitamos configurar los parámetros avanzados para especificar la dirección. Consulte el análisis básico de red para obtener más detalles sobre la estructura de estos atributos. También tenemos la opción de seleccionar el estilo geométrico de la matriz generada. Tenemos una red de carreteras con información de dirección, por lo que podemos generar la matriz siguiendo la ruta. Seleccione «La geometría de la matriz sigue las rutas». Seleccione SUMMARYDIR como campo de dirección. Introduzca OB como valor para la dirección de avance, «IB» como valor para la dirección de retroceso y BD como valor para ambas direcciones. Establezca la tolerancia topológica en «0.000150». Mantenga las demás opciones con sus valores predeterminados y haga clic en Ejecutar.

../../_images/1030.png
  1. Se añadirá una nueva capa de tabla llamada Output OD Matrix al panel Capas. Haga clic con el botón derecho y seleccione Abrir tabla de atributos. Verá que la tabla contiene 67000 filas. Teníamos 67 puntos de origen y 1000 puntos de destino - por lo que la salida contiene 67x1000 = 67000 pares de orígenes y destinos. La columna total_cost contiene la distancia en metros entre cada punto de origen y cada punto de destino.

../../_images/1134.png
  1. Para este tutorial, sólo nos interesa el punto de destino con la distancia más corta. Podemos crear una consulta SQL para elegir el destino con el menor total_cost entre todos los destinos. Vaya a Procesamiento ‣ Caja de herramientas.Busque y localice la opción Vector general ‣ Ejecutar SQL.

../../_images/1231.png
  1. En :guilabel: Fuentes de datos de entrada adicionales seleccione ... y marque la opción :guilabel: Matriz OD de salida y haga clic en :guilabel: Aceptar. Ahora haga clic en Summation bajo :guilabel: Consulta SQL. Introduzca la siguiente consulta en el cuadro de diálogo Consulta SQL. Introduzca geometry como campo Geometría y seleccione LineString como tipo de :guilabel: Geometría. Haga clic en Ejecutar.

select origin_id, destination_id, min(total_cost) as shortest_distance, geometry
from input1 group by origin_id
../../_images/1329.png
  1. Se añadirá una nueva capa virtual SQL Output al panel :guilabel: Capas. Esta capa contiene el resultado de nuestro análisis. Proveedor de servicios más cercano para cada uno de los 1000 puntos de origen.

../../_images/1427.png

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