-
Notifications
You must be signed in to change notification settings - Fork 6
* Exemple d'utilisation (en français)
Pour illustrer le fonctionnement de gtfslib, nous prendrons à titre d'exemple le jeu de données du réseau transport collectif de Grenoble, publié par la Métropole. Les exemples sont faits avec des données téléchargées le 22/01/16.
On importe les données dans une base de données tag.sqlite que l'on crée pour l'occasion:
$gtfsdbloader tag.sqlite --load=data/tag.zip --id='tag'
Importing feed ID 'tag'
Imported 0 feedinfo
Importing agencies...
Imported 1 agencies
Importing zones, stations and stops...
Imported 0 zones, 2222 stations and 2222 stops
...
Importing trips...
Imported 23215 trips
...
Normalizing trips...
...
Expanding frequencies...
Expanded 0 frequencies to 0 trips.
Feed 'tag': import done.
Pour visualiser les données en base, vous pouvez utiliser la ligne de commande sqlite ou un logiciel comme SqLite DataBase Browser, qui fonctionne sur tous les systèmes.
Les fonctions d'accès aux données permettent de manipuler les données "métier" du TC : itinéraires (routes), courses (trips), arrêts (stops), calendriers, etc. Pour reprendre les exemples du tutoriel wiki - à noter qu'on n'utiliser pas ici virtualenv mais cela peut êtr nécessaire selon l'installation effectuée - :
$python
>>>from gtfslib.dao import Dao
>>>dao = Dao("tag.sqlite")
>>>route = dao.route('A',feed_id="tag")
>>>print(route)
<Route(id=tag/A, {u'route_type': 0, u'route_long_name': u'Fontaine La Poya / Echirolles Denis Papin', u'route_color': u'0076BE', u'route_text_color': u'FFFFFF', u'agency_id': u'SEM', u'route_id': u'A', u'feed_id': u'tag', u'route_short_name': u'A'})>
>>>from gtfslib.model import Stop,StopTime,CalendarDate,Route,Trip,Calendar
>>>gares = dao.stops(fltr=Stop.stop_name.ilike("%gare%") & Stop.stop_name.ilike("%uriage%"))
>>>for g in gares:
print(g)
<Stop(id=tag/GENURIAGE, {u'stop_lat': 45.14395, u'wheelchair_boarding': 0, u'stop_lon': 5.82915, u'feed_id': u'tag', u'stop_id': u'GENURIAGE', u'stop_name': u"SAINT-MARTIN-D'URIAGE, URIAGE GARE", u'location_type': 1})>
<Stop(id=tag/4211, {u'stop_lat': 45.14399, u'wheelchair_boarding': 0, u'parent_station_id': u'GENURIAGE', u'location_type': 0, u'feed_id': u'tag', u'stop_id': u'4211', u'stop_name': u"SAINT-MARTIN-D'URIAGE, URIAGE GARE", u'stop_lon': 5.82949})>
<Stop(id=tag/4212, {u'stop_lat': 45.14395, u'wheelchair_boarding': 0, u'parent_station_id': u'GENURIAGE', u'location_type': 0, u'feed_id': u'tag', u'stop_id': u'4212', u'stop_name': u"SAINT-MARTIN-D'URIAGE, URIAGE GARE", u'stop_lon': 5.82915})>
>>>LA=dao.routes(fltr=Route.route_id == "11")[0]
>>>t=LA.trips
# sélection de la ligne 11 et des courses de cette ligne
>>>from gtfsplugins import decret_2015_1610
# vérification que la ligne A est bien du transport urbain au sens du décret de décembre 2015
>>>decret_2015_1610.decret_2015_1610(t)
Calcul decret 2015 1610 sur 663 voyages.
Calcul de l'espacement moyen des arrêts...
L'espacement moyen entre arrêt du réseau est de 379.44 mètres (max 500m).
Calcul du jour ayant la fréquence en voyage la plus élevée...
Le jour ayant le nombre de voyage le plus élevé est le 2016-01-04, avec 176 voyages.
Calcul des fréquences sur la plage horaire 8h - 19h...
La fréquence minimale est de 6.50 voyages/heure, entre 18:59:00 et 19:59:00.
La fréquence maximale est de 12.32 voyages/heure, entre 16:52:00 et 17:52:00.
Le ratio entre fréquence max et min est de 1.895 (max 2.5).
Ce service est URBAIN au sens du décret n° 2015-1610.
Out: True
On peut bien sûr, au-delà de ces quelques lignes, utiliser la librairie pour développer tout ce qu'on veut en Python...
C'est ce qui a été fait d'ailleurs pour les "plug-ins" qui sont proposés avec la librairie:
$ gtfsrun -l
List of all available plugins:
DemoPlugin:
...
Decret_2015_1610:
...
Frequencies:
...
TripsPerDay:
...
ShapefileExport:
...
$ gtfsrun tag.sqlite Decret_2015_1610 --filter="Route.route_id=='A'"
Chargement des données...
Calcul decret 2015 1610 sur 1968 voyages.
Calcul de l'espacement moyen des arrêts...
L'espacement moyen entre arrêt du réseau est de 455.38 mètres (max 500m).
Calcul du jour ayant la fréquence en voyage la plus élevée...
Le jour ayant le nombre de voyage le plus élevé est le 2016-01-04, avec 499 voyages.
Calcul des fréquences sur la plage horaire 8h - 19h...
La fréquence minimale est de 22.03 voyages/heure, entre 18:59:00 et 19:59:00.
La fréquence maximale est de 24.87 voyages/heure, entre 15:20:00 et 16:20:00.
Le ratio entre fréquence max et min est de 1.129 (max 2.5).
Ce service est URBAIN au sens du décret n° 2015-1610.
# la ligne A de Grenoble est bien du transport urbain!