5 votos

¿Calcular el orden de los puntos a lo largo de la línea?

Tengo un shapefile con líneas de transporte y otro archivo con todas las paradas de autobús a lo largo de cada línea (con un atributo que vincula las paradas con las líneas específicas a las que pertenecen).

Necesito calcular los números de orden específicos de la línea para todas las paradas: 1 es la primera parada de la que sale el autobús, 2 la segunda, etc.

El shapefile que contiene las paradas contiene duplicados de cada parada física en función del número de líneas de autobús que la utilizan (cada uno de estos duplicados tiene un número de atributo "línea" diferente).

¿Alguna sugerencia sobre cómo calcular el nuevo atributo "secuencia de paradas" para todas las paradas?

Sería preferible contar con herramientas de código abierto.

0 votos

¿el vecino más cercano?

1voto

dlinsin Puntos 5863

¿Es correcta esta simplificación de su pregunta: usted tiene una polilínea y un conjunto de puntos en esa polilínea. ¿Quiere ordenar estos puntos en la secuencia de "conducción"?

Una opción es utilizar PostGIS. Para cada punto divide la polilínea en dos y luego calcula la longitud de la primera parte de la polilínea. Esta es su función de ordenación.

1voto

Callum Rogers Puntos 161

No estoy seguro, creo que te refieres a que si un autobús está en un segmento de la línea, determine todas las paradas de autobús que están más cerca de él, pero todavía en la línea?

Lo que tienes que hacer aquí es:

  • Cree una capa de línea que una todas las paradas de autobús.
  • para cada segmento, designar un "coste", ese coste se basaría en una fórmula: distancia, tipo de intersección, tipo de calle, capacidad, volumen, is_peakhour, is_bus_peakhour, headway, etc. para simplificar se puede utilizar simplemente la longitud o el tiempo.
  • en cada nodo crean un árbol de extensión mínima que abarcará toda la red y te dirá exactamente cuál es la longitud desde la ubicación actual del autobús hasta todas las demás paradas.

Si quieres saber qué parada de autobús está más cerca de ti

  • Añade un campo a tu capa de puntos, llámalo Road_id (este campo debe tener el mismo id que el de tu carretera real. Esto indicará dónde se encuentra la parada.
  • Cree un vecino más cercano basado en esta nueva capa.

0 votos

No, probablemente necesite algo más sencillo. Sé qué paradas pertenecen a una línea concreta (tienen un atributo con el ID de una línea concreta). Sólo necesito determinar en qué orden son "visitadas" por un determinado autobús de esa línea: la primera parada es la núm. 1, la segunda parada es la nº. 2, etc. Ese orden debe calcularse a partir de su geolocalización.

0 votos

Lo que necesito tener al final son los números de secuencia asignados a cada parada. Cada parada tendrá probablemente varios números de secuencia dependiendo de la línea a la que nos refiramos. Por eso cada parada física tiene varios duplicados en el archivo shp, cada uno con diferente 'número de referencia de línea'.

1 votos

@Karel En tu pregunta, puedes poner un ejemplo detallado. Lo siento pero no estoy seguro de seguir

0voto

Luís Oliveira Puntos 2139

Si no te estoy entendiendo mal, entonces tienes que hacer lo siguiente:

  1. Identificar los identificadores de línea únicos de la TransporteLíneas shapefile
  2. Para cada ID de línea, elija todos los puntos del Parada de autobús shapefile
  3. (Ascendente) ordenar los puntos en función de la envolvente de su región es decir, de la parte inferior izquierda a la superior derecha
  4. A partir de 1, actualizar el campo correspondiente para designar la parada de autobús número

Esto es bastante sencillo de hacer.
Hay que consultar, ordenar y actualizar (en ese orden).

editar: ¿Está abierto a la personalización? Como mi sugerencia se refiere principalmente a la escritura de código

¡Salud!

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