-
Notifications
You must be signed in to change notification settings - Fork 1
Funcionamento
O GTFS gerado pela equipe de dados é armazenado regularmente no banco de dados dessa API e exibido para o app e para o público.
-
Os dados GTFS são armazenados nas tabelas:
- pontos_agency
- pontos_calendar
- pontos_calendardates
- pontos_frequencies
- pontos_routes
- pontos_shaped
- pontos_stops
- pontos_stoptimes
- pontos_trips
Veja os modelos dessas tabelas em
pontos/views.py
-
O GTFS armazenado é usado para que o aplicativo mostre coisas como:
- Qual estação aquele QRCode representa
- Quais linhas passam por aquela estação
- Os ônibus que passam por aquela estação
- A previsão de chegada desses ônibus
- O trajeto que o ônibus selecionado irá percorrer (que é a própria linha desse ônibus)
⚠️ Por enquanto a operação de atualizar os dados é feita manualmente, futuramente esperamos que seja automatizado.
O GTFS dessa API possui endpoints com as seguintes regras de filtro:
-
gtfs/agency/
- Filtros: nenhum
-
gtfs/calendar/
- Filtros: nenhum
-
gtfs/calendar_dates/
- Filtros: nenhum
-
gtfs/routes/
- Filtros: nenhum
-
gtfs/trips/
- Filtros:
trip_id
,trip_short_name
,direction_id
,service_id
- Filtros:
-
gtfs/shapes/
- Filtros:
shape_id
- Filtros:
-
gtfs/stops/
- Filtros:
stop_id
,stop_code
,stop_name
- Filtros:
-
gtfs/stop_times/
- Filtros:
trip_id
,trip_short_name
,direction_id
,service_id
,stop_id
- Filtros:
-
gtfs/frequencies/
- Filtros:
stop_id
,stop_times
,trip_id
,trip_short_name
,direction_id
,service_id
- Filtros:
-
Note que:
- Em qualquer um dos endpoints ao adicionar 2 ou mais filtros eles são usados numa operação
E
. Exemplo:trip_id = t_1 E service_id = s_2
- Todos os filtros permitem inserir um ou mais valores separados por vírgula. Exemplo:
trip_id = t_1,t_2,t_3
- Em qualquer um dos endpoints ao adicionar 2 ou mais filtros eles são usados numa operação
Alguns endpoints possuem regras adicionais:
-
gtfs/stop_times/
-
Por padrão este endpoint mostra apenas stoptimes de trips não redundantes, ou seja, apenas uma trip para cada combinação única de
trip_short_name
,direction_id
,service_id
eshape_id
.Para exibir trips redundantes adicione o parâmetro
show_all=true
. Exemplo:gtfs/stop_times/trip_short_name=601,603&show_all=true
É feito desta maneira para evitar o envio ao aplicativo de trips com a mesma combinação de atributos, só variando o
trip_id
.Afinal, o aplicativo só precisa de uma trip por combinação única de atributos para renderizar as viagens no mapa.
O motivo de haver trips redundantes é explicado nesta seção.
-
Ao filtrar por
stop_id
é aplicada a seguinte regra:-
Se o primeiro
stop_id
passado como argumento for uma estação (location_type = 1
), retorna apenas os stops que são plataformas. -
Mas se o primeiro
stop_id
for uma plataforma (location_type = 0
), retorna os stops pesquisados como parâmetro normalmente.Tal regra está comentada neste código fonte.
-
-
-
gtfs/frequencies/
- Ao filtrar por
stop_id
, é aplicada a mesma regra de stops emstop_times
:- Se o primeiro
stop_id
passado como argumento for uma estação (location_type = 1
), retorna apenas os stops que são plataformas. - Mas se o primeiro
stop_id
for uma plataforma (location_type = 0
), retorna os stops pesquisados como parâmetro normalmente.
- Se o primeiro
- Ao filtrar por