7 votos

¿Análisis del camino más corto con giros en FME?

Utilizando FME y un conjunto de datos de redes de carreteras, estoy tratando de encontrar el camino más corto de A a B, teniendo en cuenta el ancho de giro (digamos para un camión). He creado una clase de característica de punto que contiene todos los giros / cruces, cada uno de estos cruces tendrá un ancho de giro máximo permitido.

¿Cómo podría incorporar esto a mi análisis de búsqueda del camino más corto?

Ejemplo de escenario: Un camión necesita circular por determinadas carreteras con ciertas restricciones, y sólo puede girar en intersecciones lo suficientemente anchas como para que quepa el camión.

He utilizado FME para seleccionar todas las carreteras que satisfacen los criterios (es decir, la altura libre, el peso máximo, la menor longitud recorrida), pero ¿cómo incorporaría las restricciones de giro (ancho de giro) de otra clase de característica?

A continuación se muestra una captura de pantalla de mi banco de trabajo FME.

enter image description here

0 votos

Sería bastante fácil eliminar las carreteras con un giro cerrado, pero asumo que no querría hacerlo, sino que querría mantenerlas porque, por ejemplo, estaría bien pasar por un cruce en esa carretera, pero no girar a la izquierda/derecha. ¿Es eso correcto? Lo pensaré, pero es una cuestión complicada.

2voto

Yoann. B Puntos 3755

Como el mensaje inicial pide soluciones alternativas, también puedes usar FME para cargar tus datos en PostgreSQL/PostGIS y usar la extensión pgRouting.

Existe una función específica pgr_trsp que se ocupa de las restricciones de giro. Gracias a la definición dinámica de la red y de la restricción de giro mediante consultas SQL, ¡incluso debería poder adaptar sobre la marcha su solicitud al tipo de camión!

0 votos

Esa es una buena respuesta. Creo que estoy de acuerdo. No tiene sentido pasar por el dolor de jugar con los datos sólo para permanecer en FME cuando hay una manera más simple.

2voto

MobileCushion Puntos 217

Con la funcionalidad actual, es posible, ¡pero no creo que te guste cómo!

Lo que necesitarías es que tus cruces de red tuvieran este aspecto:

enter image description here

Básicamente se convierte en una línea/enlace/borde de red independiente.

Los círculos negros son nodos y las líneas rojas son la red principal. Necesitarías características separadas para las diferentes direcciones de viaje (por eso hay dos conjuntos).

Las líneas azules son giros a la derecha. Las líneas verdes son giros a la izquierda. Supongo que es un país que conduce por la derecha.

Todas las características tendrían una ponderación hacia delante de 1, y una espera hacia atrás de 9999. Cuando no se permitiera un giro, también se cambiaría su espera hacia delante a 9999.

Debido a que se utilizaría la ponderación hacia adelante y hacia atrás, las líneas tendrían que ser creadas apuntando a la dirección del viaje.

Con una red de carreteras como esa, creo que podrías utilizar el ShortestPathFinder para obtener el resultado que necesitas.

Por supuesto, es probable que tus datos no se parezcan a eso, y sería un dolor de cabeza modificarlos. Pero aparte de eso, no veo cómo puedes forzar a ese transformador a ignorar un determinado giro. Simplemente no existen los parámetros en ese transformador.

Con una red normal probablemente podrías hacer que FME generara una ruta, la probara para ver si hay giros malos, ajustara la red para evitarlo y luego generara una nueva ruta; una especie de proceso iterativo. Pero tampoco sería fácil.

No sé si eso servirá de algo, más que para demostrar lo difícil que sería. Pero yo también presentaré una solicitud de mejora al equipo de desarrollo, a ver si pueden implementar una solución (no sería pronto).

Y probablemente debería ponerse en contacto con nuestro equipo de asistencia ( http://safe.com/support ) también; en primer lugar para obtener su información de contacto en la solicitud de mejora, pero también para ver si tienen alguna idea más sencilla que la mía. ¡Tal vez estoy haciendo esto más complejo de lo necesario!

0voto

Element Puntos 2511

Si tiene un conjunto de datos de las curvas cerradas, le sugeriría que eliminara las conexiones entre (léase: vértice que crea la conexión => filtrar los segmentos de carretera que cruzan la curva > cortarlos en vértices > eliminar el vértice de la curva > reconstruir los caminos) esas carreteras. Si se trata de un giro en un segmento de carretera, puedes filtrar esos segmentos de tu conjunto de datos.

0 votos

Yo también estaba pensando eso. Eliminaría el giro, pero también la posibilidad de cruzar ese cruce en línea recta en la otra dirección

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