3 votos

pgRouting asigna valores de origen y destino a las calles en función de los nodos disponibles

Soy principiante en pgrouting. Tengo dos tablas en mi base de datos postgres. Una tabla de calles, donde cada segmento (ver línea roja) lleva un Id ( ogc_fid ). Además tengo una tabla de nodos (ver puntos marrones más abajo). Cada punto también lleva un Id único ( ogc_fid ). Los nodos siguientes no se cruzan en los pasos superiores e inferiores.

enter image description here

A partir de la tabla de nodos quiero encontrar el camino más corto. Sin embargo, primero tengo que asignar el ID de los nodos como nodo origen y destino a mi tabla de calles. Y dividir las calles en función de los nodos. (para que cada segmento esté conectado a un nodo origen y destino de la tabla de nodos)

Sin embargo, cuando utilizo el siguiente ejemplo del tutorial pgrouting crear topología

SELECT pgr_createTopology('streets',0.001,'geom','ogc_fid','source','target');

Los resultados son peores, porque no nodifica el gráfico correctamente (véase más abajo) y además nodifica los pasos superiores e inferiores. Por eso quiero usar mi tabla de nodos en lugar de los vértices generados automáticamente streets_verticec_pgr enter image description here

Mi pregunta: ¿Hay alguna forma de asignar el ogc_fid de la tabla de nodos como valor de origen y destino a mi tabla de calles en función de la dirección digitalizada? ¿Alguien tiene enlaces útiles relacionados con este tema?

2voto

PierreS Puntos 101

PgRouting no rompe automáticamente las líneas en las intersecciones para crear nuevos nodos. Hasta donde yo sé, tampoco permite "ignorar" intersecciones que ya están nodificadas. Sin embargo, el primer problema proporciona una solución indirecta al segundo, porque si haces que dos líneas se crucen sin romperlas en un nodo, no estarán conectadas y modelarán con precisión un escenario de paso por encima/por debajo.

Tendrá que preprocesar los datos para limpiarlos de problemas topológicos. v.limpiar está disponible en QGIS (que veo que está utilizando por las capturas de pantalla) y se puede utilizar con tool=break,snap para nodo todas las intersecciones. Sin embargo, tendrás que volver atrás y "des-nodificar" los pasos por debajo/por encima mencionados para mantenerlos semánticamente válidos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X