6 votos

División de líneas en intersecciones en PostGIS

He orientado polilíneas (red ferroviaria de Montreal) y paradas (estaciones de tren).

Mi red tiene este aspecto: Train Network

(mirada más de cerca): Train stations

Me gustaría dividir mis vías en cada estación e idealmente añadir los campos FromStation, ToStation a mi nueva tabla Train tracks.

He utilizado ST_Snap para ajustar mis puntos a mis pistas de modo que haya una intersección. Sin embargo, no hay garantía de que haya un nodo donde se cruzan.

He probado alguna variación utilizando ST_Split. No hay error, pero tampoco resultados. Sólo geometría vacía al final.

Mis datos provienen de los gtfs, así que por ahora, tengo un shape_id, trip_headsign y route_short_name en cada línea.

Si pudiera tener una tabla resultante como

shape_id fromstation tostation
2_1      VRM1B       SLR3B
2_1      SLR3B       SLR2B
2_1      SLR2B       SLR1B
etc.

(shape_id 2_1 es el límite oeste de la línea azul), eso sería lo ideal.

Necesito utilizarlo de algún modo para crear un modelo de asignación de personal para nuestros inspectores y agentes en la red. Cada segmento se considerará una carretera en Network Analyst con restricción de uso para que coincida con el horario de trenes en cada estación... Nunca he encontrado nada parecido, pero me han encargado que al menos lo intente.

7voto

NilObject Puntos 7874

Es posible que tenga que utilizar las funciones de referenciación lineal para obtener lo que desea. Para cada punto, utilice ST_LineLocatePoint para averiguar qué proporción a lo largo de la línea es el punto, a continuación, para cada par de puntos, utilice ST_LocateBetween para extraer la parte de la línea entre los puntos. Así que en lugar de dividir, que está utilizando la referencia lineal para extraer.

http://postgis.net/workshops/postgis-intro/linear_referencing.html

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