Skip to content
This repository has been archived by the owner on Dec 8, 2022. It is now read-only.

* Exemple d'utilisation (en français)

Patrick GENDRE edited this page Mar 4, 2016 · 16 revisions

L'exemple de l'open data de Grenoble

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 qu'il faudrait, 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})>

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:
...