GRASS 8 Programmer's Manual 8.6.0dev(2026)-f6f2c534ea
Loading...
Searching...
No Matches
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.
 
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.
 
void NetA_update_dijkstra (int old_conns, int new_conns, int to, int new_dst, int v, int route, int rows, int update, neta_timetable_result *result, dglHeap_s *heap)
 Update Dijkstra structures.
 
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.
 
int NetA_timetable_get_route_time (neta_timetable *timetable, int stop, int route)
 Get time.
 
void NetA_timetable_result_release (neta_timetable_result *result)
 Free neta_timetable_result structure.
 

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]lengthslist of lengths
[out]idslist of ids
Returns
number of distinct elements
-1 on failure

Definition at line 36 of file timetables.c.

References _, count, db_close_cursor(), db_fetch(), db_get_column_value(), db_get_cursor_table(), db_get_string(), db_get_table_column(), db_get_value_int(), DB_NEXT, DB_OK, db_open_select_cursor(), DB_SEQUENTIAL, G_calloc, and G_warning().

Referenced by NetA_init_timetable_from_db().

◆ 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 117 of file timetables.c.

References _, db_close_cursor(), db_close_database_shutdown_driver(), db_fetch(), db_get_column_value(), db_get_cursor_table(), db_get_string(), db_get_table_column(), db_get_value_int(), db_init_string(), DB_NEXT, DB_OK, db_open_select_cursor(), DB_SEQUENTIAL, db_set_string(), db_start_driver_open_database(), G_calloc, G_fatal_error(), G_warning(), NetA_init_distinct(), NULL, field_info::table, Vect_destroy_field_info(), and Vect_get_field().

◆ 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 532 of file timetables.c.

◆ 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 390 of file timetables.c.

References _, dglHeapExtractMin(), dglHeapFree(), dglHeapInit(), dglHeapInsertMin(), neta_timetable_result::dst, G_calloc, G_warning(), NetA_update_dijkstra(), NULL, neta_timetable_result::prev_conn, neta_timetable_result::prev_route, neta_timetable_result::prev_stop, neta_timetable_result::routes, and neta_timetable_result::rows.

◆ NetA_update_dijkstra()

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

Update Dijkstra structures.

Parameters
old_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 353 of file timetables.c.

References dglHeapInsertMin(), neta_timetable_result::dst, neta_timetable_result::prev_conn, neta_timetable_result::prev_route, and neta_timetable_result::prev_stop.

Referenced by NetA_timetable_shortest_path().