Add some documentatiion
[navit-package] / README
1 NavIT
2 =====
3
4 Navit is a open source (GPL) car navigation software for Linux systems
5 based on the GTK+ toolkit.  Navit will display your position on a
6 2D map, or as a 3D visualisation (planned) from GPS sensor data. Navit
7 is also capable of providing precise route calculation, touch screen
8 functionality and supports Points of Interest (POI).
9
10 Unlike other navigation systems, Navit maps are dynamically generated
11 in real time from vector data.
12
13
14
15 Maps:
16 =====
17
18 The best navigation system is useless without maps. Those two maps
19 are known to work:
20
21         http://www.amazon.de/exec/obidos/ASIN/3829731280
22                 (grosser Reiseplaner)
23         http://www.amazon.de/exec/obidos/ASIN/3934073697
24                 (Telefonbuch Deutschland Map+Route)
25
26 Once you got one of those you need to let NavIt know about it by
27 setting the MAP_DATA environment variable to the directory of the
28 map files:
29
30         export MAP_DATA=/home/navit/reiseplaner/travel/DE.map
31
32
33 Subdirectories:
34 ===============
35
36 fib-1.0
37         The library for Fibonacci heaps from 
38                 http://resnet.uoregon.edu/~gurney_j/jmpc/fib.html
39         The Fibonacci heaps are used in the routing algorithm.
40
41 graphics
42         The map layout functions.
43         As of now only the gtk_drawing_area is working.
44         We'll eventually move to cairo. 
45
46 gui
47         The user interface. So far there are a lot of files still in
48         the main directory.
49
50 plugins
51         Plugable modules. So far there is only one but we hope to
52         have more in the future.
53         - poi_geodownloads
54                 Display POIs from www.geodownload.com
55                 (depends on mdbtools.sf.net)
56
57
58 Files in src:
59 =============
60
61 block.c:
62         Manages the blocks of the map. Each block of the map is
63         seperated into two sub blocks of half the size.
64
65 command.c
66         Command line interface.
67
68 compass.c
69         Displays the compass on the map.
70
71 coord.c
72         Reads coordinates from the map.
73
74 country.c
75         Lists all available countries and provides funtions to access
76         the corresponding data.
77
78 cursor.c
79         Draws the vehicle possiton on the map.
80
81 data_window.c
82         Displays informations about visible objects.
83
84 destination.c
85         The destination selection dialog.
86
87 display.c
88         Manages the display-list. The graphics driver is called from
89         here to display the map.
90
91 file.c
92         Management of map data files.
93
94 graphics.c
95         Generates the display-list.
96
97 log.c
98         Logs local changes to the map datas. its possible to modify
99         the map without changing the original map data. The modified
100         data are stored in log.txt and reread at program start.
101
102 main.c
103         Guess what?
104
105 map_data.c
106         Manages the differnt map sources. There's an overview map of
107         europe and a detailed map of each country.
108
109 menu.c
110         Callback functions for the gui menu.
111
112 navigation.c
113         Generates directions to a destination ( not jet completed )
114
115 param.c
116         Utility functions for data_window and and popup menu
117
118 phrase.c
119         Assembles directions for the speech guide.
120
121 plugin.c
122         Loads available pugins.
123
124 poly.c
125         Generate display-list for polygons. ( cities, lakes, ... )
126
127 popup.c
128         Popup-menu dialog
129
130 profile.c
131         A simple timer for performance analysis.
132
133 route.c
134         The routing algorithm. ( see below for a more detailed
135         description )
136
137 search.c
138         Functions to search a place ( city, street, ... ) by name
139
140 speech.c
141         Interface to speechd
142
143 street.c
144         Generates a display-list for streets
145
146 street_name.c
147         Reads street names from map datas.
148
149 town.c
150         Generates a display-list for city names.
151
152 transform.c
153
154         Coordinate transformation. The map uses a Mercator projection.
155
156 tree.c
157         Manages search trees.
158
159 util.c
160         Some utility functions for strings
161
162 vehicle.c
163         Calculates the current vehicle possistion and direction.
164         Issues a cursor update if needed.
165
166
167 Routing algorithm
168 =================
169
170 NavIt uses a dykstra algorithm for routing. The routing starts at the
171 destination by assigning a value to each point directly connected to
172 destination point. The value represents the estimated time needed to
173 pass this distance.
174
175 Now the point with the lowest value is choosen using the Fibonacci
176 heap and a value is assigned to connected points whos are
177 unevaluated or whos current value ist greater than the new one.
178
179 The search is repeated until the origin is found.
180
181 Once the origin is reached, all that needs to be done is to follow the
182 points with the lowest values to the destination.
183
184
185
186 Plans:
187 ======
188
189 - use ciaro to draw the map
190
191 - get GPS data from gpsd
192
193 - complete speech output (speech.c, phrase.c)
194
195 - complete directions (navigation.c)
196
197 - investigate problem with fib-1.1
198
199