GRASS GIS 8 Programmer's Manual  8.4.0dev(2024)-112dd97adf
timetables.c File Reference

Network Analysis library - timetables. More...

#include <stdio.h>
#include <stdlib.h>
#include <grass/gis.h>
#include <grass/vector.h>
#include <grass/dbmi.h>
#include <grass/glocale.h>
#include <grass/dgl/graph.h>
#include <grass/neta.h>
Include dependency graph for timetables.c:

Go to the source code of this file.

Functions

int NetA_init_distinct (dbDriver *driver, dbString *sql, int **lengths, int **ids)
 Get number of distinct elements. More...
 
int NetA_init_timetable_from_db (struct Map_info *In, int route_layer, int walk_layer, char *route_id, char *times, char *to_stop, char *walk_length, neta_timetable *timetable, int **route_ids, int **stop_ids)
 Initialises timetable from a database. More...
 
void NetA_update_dijkstra (int old_conns, int new_conns, int to, int new_dst, int v, int route, int rows UNUSED, int update, neta_timetable_result *result, dglHeap_s *heap)
 Update Dijkstra structures. More...
 
int NetA_timetable_shortest_path (neta_timetable *timetable, int from_stop, int to_stop, int start_time, int min_change, int max_changes, int walking_change, neta_timetable_result *result)
 Computes the earliest arrival time. More...
 
int NetA_timetable_get_route_time (neta_timetable *timetable, int stop, int route)
 Get time. More...
 
void NetA_timetable_result_release (neta_timetable_result *result)
 Free neta_timetable_result structure. More...
 

Detailed Description

Network Analysis library - timetables.

Shortest path using timetables.

(C) 2009-2010 by Daniel Bundala, and the GRASS Development Team

This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details.

Author
Daniel Bundala (Google Summer of Code 2009)

Definition in file timetables.c.

Function Documentation

◆ NetA_init_distinct()

int NetA_init_distinct ( dbDriver driver,
dbString sql,
int **  lengths,
int **  ids 
)

Get number of distinct elements.

Parameters
driverDB driver
sqlSQl string
[out]listof lengths
[out]listof ids
Returns
number of distinct elements
-1 on failure

Definition at line 36 of file timetables.c.

References count.

◆ NetA_init_timetable_from_db()

int NetA_init_timetable_from_db ( struct Map_info In,
int  route_layer,
int  walk_layer,
char *  route_id,
char *  times,
char *  to_stop,
char *  walk_length,
neta_timetable timetable,
int **  route_ids,
int **  stop_ids 
)

Initialises timetable from a database.

Parameters
Inpointer to Map_info structure
route_layerlayer number of routes
walk_layerlayer number of walkers
route_idid of route
timeslist of timestamps
to_stop?
walk_lengthwalk length as string
timetablepointer to neta_timetable
route_idslist of route ids
stop_idslist of stop ids
Returns
0 on success
non-zero value on failure

Definition at line 113 of file timetables.c.

◆ NetA_timetable_get_route_time()

int NetA_timetable_get_route_time ( neta_timetable timetable,
int  stop,
int  route 
)

Get time.

Get time when route "route" arrives at stop "stop" or -1.

Parameters
timetablepointer to neta_timetable structure
stop'stop' node id
routeroute id
Returns
time
-1 if not found

Definition at line 522 of file timetables.c.

References neta_timetable::route_length, neta_timetable::route_stops, and neta_timetable::route_times.

◆ NetA_timetable_result_release()

void NetA_timetable_result_release ( neta_timetable_result result)

◆ NetA_timetable_shortest_path()

int NetA_timetable_shortest_path ( neta_timetable timetable,
int  from_stop,
int  to_stop,
int  start_time,
int  min_change,
int  max_changes,
int  walking_change,
neta_timetable_result result 
)

Computes the earliest arrival time.

Computes the earliest arrival time to to_stop from from_stop starting at start_time, or -1 if no path exists

Parameters
timetablepointer to neta_timetable structure
from_stop'from' node
to_stop'to' stop
start_timestart timestamp
min_change?
max_changes?
walking_change?
[out]resultpointer to neta_timetable_result
Returns
?
-1 on error

Definition at line 380 of file timetables.c.

References _, dglHeapInit(), neta_timetable_result::dst, G_calloc, G_warning(), neta_timetable_result::prev_conn, neta_timetable_result::prev_route, neta_timetable_result::prev_stop, _dglHeapData::pv, neta_timetable_result::routes, neta_timetable_result::rows, and neta_timetable::stops.

◆ NetA_update_dijkstra()

void NetA_update_dijkstra ( int  old_conns,
int  new_conns,
int  to,
int  new_dst,
int  v,
int  route,
int rows  UNUSED,
int  update,
neta_timetable_result result,
dglHeap_s heap 
)

Update Dijkstra structures.

Parameters
olc_connsold connection
new_connsnew connection
toold 'to' node
new_dstnew 'to' node
v?
routeid of route
rows? (unused)
update?
[out]resultpointer to neta_timetable_result structure
heap?

Definition at line 343 of file timetables.c.

References neta_timetable_result::dst, neta_timetable_result::prev_conn, neta_timetable_result::prev_route, neta_timetable_result::prev_stop, and _dglHeapData::pv.