2017-03-29 3 views
1

J'ai besoin de regrouper les voyages GTFS en «variantes d'itinéraire» compréhensibles par l'homme. Comme une route peut avoir effectué différents trajets en fonction du jour et de l'heure, etc.Comment regrouper des trajets GTFS similaires

Y a-t-il un moyen préféré de regrouper des trajets similaires? Trip shape_id semble prometteur, mais y a-t-il une garantie que tous les voyages similaires ont le même shape_id?

Mes données GTFS sont importées dans ma base de données SQL et la structure de la base de données est la même que celle des fichiers GTFS txt.

MISE À JOUR Je ne suis pas à la recherche de requête SQL exemple, je cherche par exemple de haut niveau comment groupe voyages similaires à l'utilisateur amis « variantes d'itinéraire ».

De nombreuses applications de planification d'itinéraire (telles que Moovit) utilisent les données GTFS comme source et affichent différentes variantes d'itinéraire pour les utilisateurs.

+0

Afficher le schéma db, les données d'exemple et la sortie attendue. \t S'il vous plaît lire [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t Et voici un bon endroit pour [** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/) pour apprendre comment améliorer la qualité de vos questions et obtenir de meilleures réponses. –

+0

Édité la question originale – devha

+0

Je sais 'avl', je sais' routage', ne sais pas 'GTFS' ou' Moovit'. Je ne ferai pas de recherche pour savoir ce que sont. Vous devez donc définir ce qu'est 'la variante de route amie '. Cela signifie fournir un échantillon de données et de sortie de désirer. –

Répondre

2

Il n'existe aucun moyen officiel de le faire. La meilleure façon est probablement de grouper par la liste ordonnée des arrêts sur chaque voyage, parfois connu comme le "modèle d'arrêt" du voyage. L'idée est discutée au niveau conceptuel here par Mapzen.

En pratique, j'ai créé des chaînes concaténées de tous les arrêts sur un trajet donné (de stop_times), et regroupées par celle-ci pour définir des trajets similaires. Par exemple, si les arrêts d'un trajet donné sont A, B, C, D et E, créez une chaîne A-B-C-D-E ou A_B_C_D_E et regroupez les trajets sur cette chaîne. Cette fonctionnalité ne fait pas partie de la spécification SQL, bien que MySQL l'implémente comme GROUP_CONCAT et que PostgreSQL utilise des tableaux et array_to_string. Vous pouvez également ajouter et shape_id dans le groupe, pour gérer certains cas de coin.

+0

Merci! C'était juste ce que je cherchais. – devha