¿Cómo extraer un área pequeña de un gran feed GTFS?

11

¿Existe alguna herramienta que permita extraer una pequeña región de un feed GTFS más grande? La biblioteca Transitfeed de Google contiene una herramienta de combinación, pero ninguna herramienta de extracción / recorte, por lo que puedo ver. Otras bibliotecas que he encontrado solo pueden leer y trazar datos, pero no admiten la manipulación.

Información básica: el Validador de feeds de Transitfeed muestra muchos errores para mi archivo GTFS. Quiero extraer mi región de interés para evaluar la calidad local.


Las recomendaciones en Twitter me apuntaron a FME, que tiene tanto un lector GTFS como un escritor. Mi flujo de trabajo simple consiste en un lector GTFS (abajo a la izquierda), un lector de archivos de forma (arriba a la izquierda, para el polígono del área de interés), un clipper y un escritor GTFS para la salida (solo escribo los archivos de paradas y formas por ahora, pero finalmente ' querrá todos los archivos):

ingrese la descripción de la imagen aquí

El problema hasta ahora es que el contenido de formas de salida (puntos naranjas) no contiene todos los puntos de entrada (verdes) que están dentro del área amarilla de interés:

ingrese la descripción de la imagen aquí

(Fuente de datos: https://transitfeeds.com/p/helsinki-regional-transport/735/latest/download )


Usando "Crear agregados" = "No", las formas recortadas parecen completas

ingrese la descripción de la imagen aquí

pero las paradas definitivamente no son

ingrese la descripción de la imagen aquí

bajo oscuro
fuente
¿Es posible compartir el archivo de forma y el espacio de trabajo que utilizó en el ejemplo anterior? Me doy cuenta de que no puedes compartir los datos de GTFS.
Ken Bragg
Los números rojos en el espacio de trabajo indican características que no se pudieron recortar. Al hacer doble clic en él, se abrirán en el inspector de datos para que pueda ver cuáles son. Supongo que son características sin geometría.
Ken Bragg
Sí, esas son todas las características de los archivos que no son de geometría, por lo que puedo decir.
oscuro

Respuestas:

6

Esto debería ser posible en FME 2016. Debido a que no podemos escribir agregados en GTFS, se necesita una configuración en Clipper "Crear agregados" = "No" para evitar que FME cree agregados cuando la función recortada da como resultado múltiples piezas. El espacio de trabajo con el que probé está aquí: https://www.dropbox.com/s/b02hd7shefybtmw/gtfs2gtfs.fmw?dl=0 Según los datos de muestra de Helsinki aquí: https://t.co/wAZHmUS5HN ingrese la descripción de la imagen aquí

Ken Bragg
fuente
Gracias, tendré que volver a intentarlo en la oficina. Por cierto, ¿hay suficiente "magia negra" / lógica para tener también los archivos GTFS que no contienen coordenadas por sí mismos (por ejemplo, rutas.txt y viajes.txt) recortados?
oscuro
Puede unir los atributos de datos no espaciales con una fusión de características o uniones con la referencia oficial developers.google.com/transit/gtfs/reference pero no todos los datos de Helsinki se rellenan, por lo que las uniones no funcionarán completamente.
Mapperz
Sí, como señala @Mapperz, necesitamos usar el transformador FeatureMerger para unir las geometrías recortadas con características no espaciales. Por ejemplo, los viajes se pueden encontrar utilizando FeatureMerger para unirse en shap_id y luego los registros de calendario se pueden encontrar al fusionarse con el viaje en service_id. Empecé a trabajar en esto aquí: dropbox.com/s/b02hd7shefybtmw/gtfs2gtfs.fmw?dl=0
Ken Bragg
1
Veo el problema y creo que la solución ;-) El atributo parent_station en las paradas en los datos de muestra de Helsinki tiene algunos espacios en blanco (como se permite en la especificación) pero parecen ser espacios en blanco, por lo que FME no los escribirá porque no No cumple con el tipo de datos definido por FME. Estamos imponiendo enteros o nulos. Puede solucionar esto utilizando el transformador AttributeManager para establecer el atributo en nulo si no es un número entero. Vea la captura de pantalla aquí: screencast.com/t/dvsWfoYe
Ken Bragg el
2
Si lo anterior no ayuda, estaremos encantados de trabajar con usted más de cerca a través del soporte de Safe Software ( safe.com/support ) y podemos publicar un resumen aquí cuando hayamos resuelto todo. O continúe aquí si lo prefiere.
Ken Bragg
5

Si conoce las rutas que se encuentran en su región de interés, el Transformador GTFS puede proporcionarle un GTFS mucho más pequeño.

Al hacerlo, eliminará todos los viajes, formas, paradas, tiempos de parada y calendarios que no están incluidos en las rutas retenidas.

Si desea eliminar route_id 1 y mantener route_id 3, su archivo de transformación se vería así:

{"op":"retain","match":{"file":"routes.txt","route_id":"1"}}
{"op":"remove","match":{"file":"routes.txt","route_id":"3"}}
Tony Laidig
fuente
1
Si bien no es lo ideal, podría terminar siendo la mejor solución disponible. Según la descripción, supongo que Transformer también filtra todos los archivos relacionados para que solo contengan información de las rutas retenidas.
oscuro
1

Acabo de encontrar twalcari / gtfs-filter , una buena utilidad para filtrar GTFS por cuadro delimitador, tiempo y / o modos de viaje (clásicos).

Holger Bruch
fuente