/usr/lib/grass64/include/grass/neta.h is in grass-dev 6.4.3-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | /****************************************************************
*
* MODULE: netalib
*
* AUTHOR(S): Daniel Bundala (Google Summer of Code 2009)
*
* PURPOSE: NETwork Analysis Library
*
* COPYRIGHT: (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.
*
****************************************************************/
#ifndef _NETA_H_
#define _NETA_H_
#include <stdio.h>
#include <stdlib.h>
#include <grass/gis.h>
#include <grass/Vect.h>
#include <grass/dbmi.h>
#include <grass/glocale.h>
#include <grass/dgl/graph.h>
/*bridge.c */
int NetA_compute_bridges(dglGraph_s * graph, struct ilist *bridge_list);
int NetA_articulation_points(dglGraph_s * graph,
struct ilist *articulation_list);
/*components.c */
int NetA_weakly_connected_components(dglGraph_s * graph, int *component);
int NetA_strongly_connected_components(dglGraph_s * graph, int *component);
/*spanningtree.c */
int NetA_spanning_tree(dglGraph_s * graph, struct ilist *tree_list);
/*allpairs.c */
int NetA_allpairs(dglGraph_s * graph, dglInt32_t ** dist);
/*neta_flow.c */
int NetA_flow(dglGraph_s * graph, struct ilist *source_list,
struct ilist *sink_list, int *flow);
int NetA_min_cut(dglGraph_s * graph, struct ilist *source_list,
struct ilist *sink_list, int *flow, struct ilist *cut);
int NetA_split_vertices(dglGraph_s * in, dglGraph_s * out, int *node_costs);
/*utils.c */
void NetA_add_point_on_node(struct Map_info *In, struct Map_info *Out, int node,
struct line_cats *Cats);
void NetA_points_to_nodes(struct Map_info *In, struct ilist *point_list);
int NetA_get_node_costs(struct Map_info *In, int layer, char *column,
int *node_costs);
void NetA_varray_to_nodes(struct Map_info *map, struct varray * varray,
struct ilist *nodes, int *nodes_to_features);
int NetA_initialise_varray(struct Map_info *In, int layer, int mask_type,
char *where, char *cat, struct varray ** varray);
/*centrality.c */
void NetA_degree_centrality(dglGraph_s * graph, double *degree);
int NetA_eigenvector_centrality(dglGraph_s * graph, int iterations,
double error, double *eigenvector);
int NetA_betweenness_closeness(dglGraph_s * graph, double *betweenness,
double *closeness);
/*path.c */
int NetA_distance_from_points(dglGraph_s * graph, struct ilist *from, int *dst,
dglInt32_t ** prev);
int NetA_find_path(dglGraph_s * graph, int from, int to, int *edges,
struct ilist *list);
/*timetables.c */
/*Structure containing all information about a timetable.
* Everything in indexed from 0.
*/
typedef struct
{
int routes; /*Number of different routes. Two routes are different even if they differ only in time. */
int *route_length; /*Length of each route, i.e., number of stops */
int **route_stops; /*list of stops on each route in order (time increases) */
int **route_times; /*stop arrival times on overy route. Stops are given in the same order as above */
int stops; /*number of stops */
int *stop_length; /*Number of routes stopping at each stop */
int **stop_routes; /*List of routes for each stop. Routes are in increasing order */
int **stop_times; /*arrival times of routes for each stop. Routes are given in the same order as above */
int *walk_length; /*number of stops with "walking connection" for each stop */
int **walk_stops; /*list of stops within walking distance for each stop */
int **walk_times; /*walking times between stops as given above */
} neta_timetable;
typedef struct
{
int **dst;
int **prev_stop;
int **prev_route;
int **prev_conn;
int rows, routes;
} neta_timetable_result;
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);
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);
int NetA_timetable_get_route_time(neta_timetable * timetable, int stop,
int route);
void NetA_timetable_result_release(neta_timetable_result * result);
#endif
|