Check out the latest version of Routino: svn co http://routino.org/svn/trunk routino
Annotation of /trunk/doc/USAGE.txt
Parent Directory
|
Revision Log
Revision 991 -
(hide annotations)
(download)
Wed May 2 16:40:08 2012 UTC (12 years, 11 months ago) by amb
File MIME type: text/plain
File size: 20541 byte(s)
Wed May 2 16:40:08 2012 UTC (12 years, 11 months ago) by amb
File MIME type: text/plain
File size: 20541 byte(s)
Convert sorting algorithms to optionally use multiple threads.
1 | amb | 381 | Routino : Usage |
2 | =============== | ||
3 | amb | 152 | |
4 | |||
5 | amb | 420 | There are four programs that make up this software. The first one takes |
6 | the planet.osm datafile from OpenStreetMap (or other source of data | ||
7 | using the same formats) and converts it into a local database. The | ||
8 | amb | 191 | second program uses the database to determine an optimum route between |
9 | two points. The third program allows visualisation of the data and | ||
10 | amb | 420 | statistics to be extracted. The fourth program is a test program for |
11 | the tag transformations. | ||
12 | amb | 152 | |
13 | amb | 429 | |
14 | amb | 152 | planetsplitter |
15 | amb | 318 | -------------- |
16 | amb | 152 | |
17 | amb | 420 | This program reads in the OSM format XML file and splits it up to |
18 | create the database that is used for routing. | ||
19 | |||
20 | amb | 953 | Usage: planetsplitter [--help] |
21 | [--dir=<dirname>] [--prefix=<name>] | ||
22 | amb | 991 | [--sort-ram-size=<size>] [--sort-threads=<number>] |
23 | amb | 953 | [--tmpdir=<dirname>] |
24 | [--tagging=<filename>] | ||
25 | amb | 982 | [--loggable] [--logtime] |
26 | [--errorlog[=<name>]] | ||
27 | amb | 953 | [--parse-only | --process-only] |
28 | [--max-iterations=<number>] | ||
29 | amb | 975 | [--prune-none] |
30 | [--prune-isolated=<len>] | ||
31 | [--prune-short=<len>] | ||
32 | [--prune-straight=<len>] | ||
33 | amb | 953 | [<filename.osm> ...] |
34 | amb | 152 | |
35 | --help | ||
36 | Prints out the help information. | ||
37 | |||
38 | amb | 381 | --dir=<dirname> |
39 | amb | 152 | Sets the directory name in which to save the results. Defaults |
40 | to the current directory. | ||
41 | |||
42 | --prefix=<name> | ||
43 | Sets the filename prefix for the files that are created. | ||
44 | Defaults to no prefix. | ||
45 | |||
46 | amb | 381 | --sort-ram-size=<size> |
47 | Specifies the amount of RAM (in MB) to use for sorting the data. | ||
48 | amb | 515 | If not specified then 64 MB will be used in slim mode or 256 MB |
49 | otherwise. | ||
50 | amb | 381 | |
51 | amb | 991 | --sort-threads=<number> |
52 | The number of threads to use for data sorting (the sorting | ||
53 | memory is shared between the threads). | ||
54 | |||
55 | amb | 381 | --tmpdir=<dirname> |
56 | amb | 288 | Specifies the name of the directory to store the temporary disk |
57 | files. If not specified then it defaults to either the value of | ||
58 | the --dir option or the current directory. | ||
59 | |||
60 | amb | 953 | --tagging=<filename> |
61 | Sets the filename containing the list of tagging rules in XML | ||
62 | format for the parsing the input files. If the file doesn't | ||
63 | exist then dirname, prefix and "profiles.xml" will be combined | ||
64 | and used, if that doesn't exist then the file | ||
65 | '/usr/local/share/routino/profiles.xml' (or custom installation | ||
66 | location) will be used. | ||
67 | amb | 381 | |
68 | amb | 524 | --loggable |
69 | Print progress messages that are suitable for logging to a file; | ||
70 | normally an incrementing counter is printed which is more | ||
71 | amb | 737 | suitable for real-time display than logging. |
72 | amb | 524 | |
73 | amb | 982 | --logtime |
74 | Print the elapsed time for each processing step. | ||
75 | |||
76 | amb | 810 | --errorlog[=<name>] |
77 | Log OSM parsing and processing errors to 'error.log' or the | ||
78 | specified file name (the '--dir' and '--prefix' options are | ||
79 | applied). | ||
80 | amb | 804 | |
81 | amb | 953 | --parse-only |
82 | Parse the input files and store them in a temporary file but | ||
83 | don't process the data into a routing database. | ||
84 | |||
85 | --process-only | ||
86 | Don't read in any files but process the existing temporary file | ||
87 | into the routing database. | ||
88 | |||
89 | amb | 318 | --max-iterations=<number> |
90 | The maximum number of iterations to use when generating | ||
91 | amb | 861 | super-nodes and super-segments. Defaults to 5 which is normally |
92 | amb | 318 | enough. |
93 | |||
94 | amb | 975 | --prune-none |
95 | Disable the prune options below, they can be re-enabled by | ||
96 | adding them to the command line after this option. | ||
97 | amb | 318 | |
98 | amb | 975 | --prune-isolated=<length> |
99 | Remove small disconnected groups of segments (defaults to | ||
100 | removing groups under 500m). | ||
101 | amb | 964 | |
102 | amb | 975 | --prune-short=<length> |
103 | Remove short segments (defaults to removing segments up to a | ||
104 | maximum length of 5m). | ||
105 | amb | 966 | |
106 | amb | 975 | --prune-straight=<length> |
107 | Remove nodes in almost straight highways (defaults to removing | ||
108 | nodes up to 3m offset from a straight line). | ||
109 | |||
110 | amb | 381 | <filename.osm> ... |
111 | Specifies the filename(s) to read data from, by default data is | ||
112 | read from the standard input. | ||
113 | |||
114 | amb | 420 | Note: In version 1.4 of Routino the --transport, --not-highway and |
115 | amb | 429 | --not-property options have been removed. The same functionality can be |
116 | amb | 737 | achieved by editing the tagging rules file to not output unwanted data. |
117 | amb | 420 | |
118 | amb | 515 | Note: In version 1.5 of Routino the --slim option has been removed but |
119 | at compilation time a separate program called planetsplitter-slim is | ||
120 | created that operates in slim mode. In slim mode the temporary files | ||
121 | and database files are read as needed rather than being mapped into | ||
122 | memory. This allows a database size greater than 2 GB on 32-bit | ||
123 | machines or usage with little or no virtual memory (e.g. some virtual | ||
124 | amb | 953 | machines). The penalty for this is that the program takes about twice |
125 | as long to run. | ||
126 | amb | 515 | |
127 | amb | 152 | Example usage: |
128 | amb | 381 | |
129 | amb | 953 | ./planetsplitter --dir=data --prefix=gb great_britain.osm |
130 | amb | 180 | |
131 | amb | 152 | This will generate the output files 'data/gb-nodes.mem', |
132 | 'data/gb-segments.mem' and 'data/gb-ways.mem'. | ||
133 | |||
134 | amb | 318 | |
135 | amb | 152 | router |
136 | amb | 318 | ------ |
137 | amb | 152 | |
138 | amb | 420 | This program performs the calculation of the optimum routes using the |
139 | database generated by the planetsplitter program. | ||
140 | |||
141 | amb | 953 | Usage: router [--help | --help-profile | --help-profile-xml | |
142 | --help-profile-json | --help-profile-perl ] | ||
143 | [--dir=<dirname>] [--prefix=<name>] | ||
144 | [--profiles=<filename>] [--translations=<filename>] | ||
145 | [--exact-nodes-only] | ||
146 | [--loggable | --quiet] | ||
147 | [--output-html] | ||
148 | [--output-gpx-track] [--output-gpx-route] | ||
149 | [--output-text] [--output-text-all] | ||
150 | [--output-none] | ||
151 | [--profile=<name>] | ||
152 | [--transport=<transport>] | ||
153 | [--shortest | --quickest] | ||
154 | --lon1=<longitude> --lat1=<latitude> | ||
155 | --lon2=<longitude> --lon2=<latitude> | ||
156 | [ ... --lon99=<longitude> --lon99=<latitude>] | ||
157 | [--heading=<bearing>] | ||
158 | [--highway-<highway>=<preference> ...] | ||
159 | [--speed-<highway>=<speed> ...] | ||
160 | [--property-<property>=<preference> ...] | ||
161 | [--oneway=(0|1)] [--turns=(0|1)] | ||
162 | [--weight=<weight>] | ||
163 | [--height=<height>] [--width=<width>] [--length=<length>] | ||
164 | amb | 152 | |
165 | --help | ||
166 | Prints out the help information. | ||
167 | |||
168 | --help-profile | ||
169 | Prints out the selected transport profile (type, speed limits, | ||
170 | highway preferences etc.) | ||
171 | |||
172 | amb | 381 | --help-profile-xml |
173 | Prints out all the loaded profiles as an XML file in the same | ||
174 | format that can be loaded in. | ||
175 | amb | 152 | |
176 | amb | 381 | --help-profile-json |
177 | Prints out all the loaded profiles in JavaScript Object Notation | ||
178 | (JSON) format for use in the interactive webpage. | ||
179 | amb | 152 | |
180 | amb | 381 | --help-profile-perl |
181 | Prints out all the loaded profiles as a Perl object for use in | ||
182 | the router CGI. | ||
183 | |||
184 | --dir=<dirname> | ||
185 | amb | 191 | Sets the directory name in which to read the local database. |
186 | Defaults to the current directory. | ||
187 | amb | 152 | |
188 | --prefix=<name> | ||
189 | amb | 191 | Sets the filename prefix for the files in the local database. |
190 | amb | 152 | Defaults to no prefix. |
191 | |||
192 | amb | 381 | --profiles=<filename> |
193 | amb | 515 | Sets the filename containing the list of routing profiles in XML |
194 | format. If the file doesn't exist then dirname, prefix and | ||
195 | amb | 381 | "profiles.xml" will be combined and used, if that doesn't exist |
196 | amb | 515 | then the file '/usr/local/share/routino/profiles.xml' (or custom |
197 | installation location) will be used. | ||
198 | amb | 152 | |
199 | amb | 381 | --translations=<filename> |
200 | Sets the filename containing the list of translations in XML | ||
201 | format for the output files. If the file doesn't exist then | ||
202 | dirname, prefix and "translations.xml" will be combined and | ||
203 | amb | 515 | used, if that doesn't exist then the file |
204 | '/usr/local/share/routino/translations.xml' (or custom | ||
205 | installation location) will be used. | ||
206 | amb | 152 | |
207 | amb | 318 | --exact-nodes-only |
208 | When processing the specified latitude and longitude points only | ||
209 | select the nearest node instead of finding the nearest point | ||
210 | amb | 381 | within a segment (quicker but less accurate unless the points |
211 | are already near nodes). | ||
212 | amb | 318 | |
213 | amb | 524 | --loggable |
214 | Print progress messages that are suitable for logging to a file; | ||
215 | normally an incrementing counter is printed which is more | ||
216 | amb | 737 | suitable for real-time display than logging. |
217 | amb | 524 | |
218 | amb | 152 | --quiet |
219 | Don't generate any screen output while running (useful for | ||
220 | running in a script). | ||
221 | |||
222 | amb | 381 | --language=<lang> |
223 | Select the language specified from the file of translations. If | ||
224 | this option is not given and the file exists then the first | ||
225 | language in the file will be used. If this option is not given | ||
226 | and no file exists the compiled-in default language (English) | ||
227 | will be used. | ||
228 | |||
229 | --output-html | ||
230 | --output-gpx-track | ||
231 | --output-gpx-route | ||
232 | --output-text | ||
233 | --output-text-all | ||
234 | Generate the selected output file formats (HTML, GPX track file, | ||
235 | GPX route file, plain text route and/or plain text with all | ||
236 | nodes). If no output is specified then all are generated, | ||
237 | specifying any automatically disables those not specified. | ||
238 | |||
239 | --output-none | ||
240 | Do not generate any output or read in any translations files. | ||
241 | |||
242 | --profile=<name> | ||
243 | Specifies the name of the profile to use. | ||
244 | |||
245 | amb | 152 | --transport=<transport> |
246 | amb | 191 | Select the type of transport to use, <transport> can be set to: |
247 | amb | 318 | |
248 | + foot = Foot | ||
249 | + horse = Horse | ||
250 | + wheelchair = Wheelchair | ||
251 | + bicycle = Bicycle | ||
252 | + moped = Moped (Small motorbike, limited speed) | ||
253 | + motorbike = Motorbike | ||
254 | + motorcar = Motorcar | ||
255 | + goods = Goods (Small lorry, van) | ||
256 | + hgv = HGV (Heavy Goods Vehicle - large lorry) | ||
257 | + psv = PSV (Public Service Vehicle - bus, coach) | ||
258 | |||
259 | Defaults to 'motorcar', this option also selects the default | ||
260 | amb | 381 | profile information if the '--profile' option is not given and a |
261 | profile matching the transport name is found. | ||
262 | amb | 152 | |
263 | amb | 381 | --shortest |
264 | Find the shortest route between the waypoints. | ||
265 | |||
266 | --quickest | ||
267 | Find the quickest route between the waypoints. | ||
268 | |||
269 | --lon1=<longitude>, --lat1=<latitude> | ||
270 | --lon2=<longitude>, --lat2=<latitude> | ||
271 | ... --lon99=<longitude>, --lat99=<latitude> | ||
272 | The location of the waypoints that make up the start, middle and | ||
273 | end points of the route. Up to 99 waypoints can be specified and | ||
274 | the route will pass through each of the specified ones in | ||
275 | sequence. The algorithm will use the closest node or point | ||
276 | within a segment that allows the specified traffic type. | ||
277 | |||
278 | amb | 675 | --heading=<bearing> |
279 | Specifies the initial direction of travel at the start of the | ||
280 | route (from the lowest numbered waypoint) as a compass bearing | ||
281 | amb | 737 | from 0 to 360 degrees. |
282 | amb | 675 | |
283 | amb | 180 | --highway-<highway>=<preference> |
284 | Selects the percentage preference for using each particular type | ||
285 | amb | 318 | of highway. The value of <highway> can be selected from: |
286 | amb | 152 | |
287 | amb | 318 | + motorway = Motorway |
288 | + trunk = Trunk | ||
289 | + primary = Primary | ||
290 | + secondary = Secondary | ||
291 | + tertiary = Tertiary | ||
292 | + unclassified = Unclassified | ||
293 | + residential = Residential | ||
294 | + service = Service | ||
295 | + track = Track | ||
296 | + cycleway = Cycleway | ||
297 | + path = Path | ||
298 | + steps = Steps | ||
299 | amb | 515 | + ferry = Ferry |
300 | amb | 318 | |
301 | Default value depends on the profile selected by the --transport | ||
302 | option. | ||
303 | |||
304 | amb | 152 | --speed-<highway>=<speed> |
305 | amb | 191 | Selects the speed limit in km/hour for each type of highway. |
306 | Default value depends on the profile selected by the --transport | ||
307 | option. | ||
308 | amb | 152 | |
309 | amb | 318 | --property-<property>=<preference> |
310 | Selects the percentage preference for using each particular | ||
311 | highway property The value of <property> can be selected from: | ||
312 | |||
313 | + paved = Paved (suitable for normal wheels) | ||
314 | + multilane = Multiple lanes | ||
315 | + bridge = Bridge | ||
316 | + tunnel = Tunnel | ||
317 | amb | 515 | + footroute = A route marked for foot travel |
318 | + bicycleroute = A route marked for bicycle travel | ||
319 | amb | 318 | |
320 | Default value depends on the profile selected by the --transport | ||
321 | option. | ||
322 | |||
323 | amb | 152 | --oneway=[0|1] |
324 | Selects if the direction of oneway streets are to be obeyed | ||
325 | (useful to not obey them when walking). Default value depends on | ||
326 | the profile selected by the --transport option. | ||
327 | |||
328 | amb | 622 | --turns=[0|1] |
329 | Selects if turn restrictions are to be obeyed (useful to not | ||
330 | obey them when walking). Default value depends on the profile | ||
331 | selected by the --transport option. | ||
332 | |||
333 | amb | 152 | --weight=<weight> |
334 | amb | 318 | Specifies the weight of the mode of transport in tonnes; ensures |
335 | amb | 191 | that the weight limit on the highway is not exceeded. Default |
336 | value depends on the profile selected by the --transport option. | ||
337 | amb | 152 | |
338 | --height=<height> | ||
339 | amb | 318 | Specifies the height of the mode of transport in metres; ensures |
340 | amb | 191 | that the height limit on the highway is not exceeded. Default |
341 | value depends on the profile selected by the --transport option. | ||
342 | amb | 152 | |
343 | --width=<width> | ||
344 | amb | 318 | Specifies the width of the mode of transport in metres; ensures |
345 | amb | 191 | that the width limit on the highway is not exceeded. Default |
346 | value depends on the profile selected by the --transport option. | ||
347 | amb | 152 | |
348 | --length=<length> | ||
349 | amb | 318 | Specifies the length of the mode of transport in metres; ensures |
350 | amb | 191 | that the length limit on the highway is not exceeded. Default |
351 | value depends on the profile selected by the --transport option. | ||
352 | amb | 152 | |
353 | amb | 515 | Note: In version 1.5 of Routino a slim option has been added and at |
354 | compilation time a separate program called router-slim is created that | ||
355 | operates in slim mode. In slim mode the database files are read as | ||
356 | needed rather than being mapped into memory. | ||
357 | |||
358 | amb | 318 | The meaning of the <preference> parameter in the command line options |
359 | is slightly different for the highway preferences and the property | ||
360 | preferences. For the highway preference consider the choice between two | ||
361 | possible highways between the start and finish when looking for the | ||
362 | shortest route. If highway A has a preference of 100% and highway B has | ||
363 | a preference of 90% then highway A will be chosen even if it is up to | ||
364 | 11% longer (100/90 = 111%). For the highway properties each highway | ||
365 | amb | 515 | either has a particular property or not. If the preference for the |
366 | property is 60% then a highway with the property has a preference of | ||
367 | 77% (sqrt(60%)) and one without has a preference of 63% | ||
368 | (sqrt(100-60%)). A highway with the property will be chosen even if it | ||
369 | is up to 22% longer than one without the property (77/63 = 122%). The | ||
370 | overall preference for each highway segment is the product of the | ||
371 | preference for the highway type and all of the preferences for the | ||
372 | highway properties. | ||
373 | amb | 318 | |
374 | amb | 152 | Example usage (motorbike journey, scenic route, not very fast): |
375 | amb | 180 | |
376 | amb | 152 | ./router --dir=data --prefix=gb --transport=motorbike --highway-motorway=0 \ |
377 | --highway-trunk=0 --speed-primary=80 --speed-secondary=80 --quickest | ||
378 | |||
379 | This will use the files 'data/gb-nodes.mem', 'data/gb-segments.mem' and | ||
380 | 'data/gb-ways.mem' to find the quickest route by motorbike not using | ||
381 | motorways or trunk roads and not exceeding 80 km/hr. | ||
382 | |||
383 | amb | 180 | |
384 | amb | 191 | filedumper |
385 | amb | 318 | ---------- |
386 | amb | 152 | |
387 | amb | 420 | This program is used to extract statistics from the database, extract |
388 | particular information for visualisation purposes or for dumping the | ||
389 | database contents. | ||
390 | |||
391 | amb | 953 | Usage: filedumper [--help] |
392 | [--dir=<dirname>] [--prefix=<name>] | ||
393 | [--statistics] | ||
394 | [--visualiser --latmin=<latmin> --latmax=<latmax> | ||
395 | --lonmin=<lonmin> --lonmax=<lonmax> | ||
396 | --data=<data-type>] | ||
397 | [--dump [--node=<node> ...] | ||
398 | [--segment=<segment> ...] | ||
399 | [--way=<way> ...] | ||
400 | [--turn-relation=<relation> ...]] | ||
401 | [--dump-osm [--no-super] | ||
402 | [--latmin=<latmin> --latmax=<latmax> | ||
403 | --lonmin=<lonmin> --lonmax=<lonmax>]] | ||
404 | amb | 152 | |
405 | amb | 191 | --help |
406 | Prints out the help information. | ||
407 | amb | 152 | |
408 | amb | 381 | --dir=<dirname> |
409 | amb | 191 | Sets the directory name in which to read the local database. |
410 | Defaults to the current directory. | ||
411 | amb | 152 | |
412 | amb | 191 | --prefix=<name> |
413 | Sets the filename prefix for the files in the local database. | ||
414 | amb | 180 | |
415 | amb | 191 | --statistics |
416 | Prints out statistics about the database files. | ||
417 | amb | 152 | |
418 | amb | 191 | --visualiser |
419 | Selects a data visualiser mode which will output a set of data | ||
420 | according to the other parameters below. | ||
421 | amb | 152 | |
422 | amb | 191 | --latmin=<latmin> --latmax=<latmax> |
423 | The range of latitudes to print the data for. | ||
424 | amb | 152 | |
425 | amb | 191 | --lonmin=<lonmin> --lonmax=<lonmax> |
426 | The range of longitudes to print the data for. | ||
427 | amb | 155 | |
428 | amb | 191 | --data=<data-type> |
429 | The type of data to output, <data-type> can be selected | ||
430 | from: | ||
431 | amb | 381 | |
432 | amb | 191 | o junctions = segment count at each junction. |
433 | o super = super-node and super-segments. | ||
434 | o oneway = oneway segments. | ||
435 | amb | 623 | o turns = turn restrictions. |
436 | amb | 191 | o speed = speed limits. |
437 | o weight = weight limits. | ||
438 | o height = height limits. | ||
439 | o width = width limits. | ||
440 | o length = length limits. | ||
441 | amb | 155 | |
442 | amb | 288 | --dump |
443 | Selects a data dumping mode which allows looking at individual | ||
444 | amb | 381 | items in the databases (specifying 'all' instead of a number |
445 | amb | 620 | dumps all of them). More than one of the following parameters |
446 | can be specified on the command line. | ||
447 | amb | 191 | |
448 | amb | 288 | --node=<node> |
449 | Prints the information about the selected node number | ||
450 | amb | 318 | (internal number, not the node id number in the original |
451 | amb | 288 | source file). |
452 | |||
453 | --segment=<segment> | ||
454 | Prints the information about the selected segment number. | ||
455 | |||
456 | --way=<way> | ||
457 | amb | 318 | Prints the information about the selected way number |
458 | (internal number, not the way id number in the original | ||
459 | source file). | ||
460 | amb | 288 | |
461 | amb | 620 | --turn-relation=<relation> |
462 | Prints the information about the selected turn relation | ||
463 | number (internal number, not the relation id number in the | ||
464 | original source file). | ||
465 | |||
466 | amb | 420 | --osm-dump |
467 | Dumps the contents of the database as an OSM format XML file, | ||
468 | the whole database will be dumped unless the latitude and | ||
469 | longitude ranges are specified. | ||
470 | amb | 288 | |
471 | amb | 420 | --no-super |
472 | The super segments will not be output. | ||
473 | |||
474 | --latmin=<latmin> --latmax=<latmax> | ||
475 | The range of latitudes to dump the data for. | ||
476 | |||
477 | --lonmin=<lonmin> --lonmax=<lonmax> | ||
478 | The range of longitudes to dump the data for. | ||
479 | |||
480 | amb | 515 | Note: In version 1.5 of Routino a slim option has been added and at |
481 | compilation time a separate program called filedumper-slim is created | ||
482 | that operates in slim mode. In slim mode the database files are read as | ||
483 | needed rather than being mapped into memory. | ||
484 | |||
485 | amb | 620 | |
486 | amb | 420 | tagmodifier |
487 | ----------- | ||
488 | |||
489 | This program is used to run the tag transformation process on an OSM | ||
490 | XML file for test purposes. | ||
491 | |||
492 | Usage: tagmodifier [--help] | ||
493 | amb | 524 | [--loggable] |
494 | amb | 420 | [--tagging=<filename>] |
495 | [<filename.osm>] | ||
496 | |||
497 | --help | ||
498 | Prints out the help information. | ||
499 | |||
500 | amb | 524 | --loggable |
501 | Print progress messages that are suitable for logging to a file; | ||
502 | normally an incrementing counter is printed which is more | ||
503 | amb | 737 | suitable for real-time display than logging. |
504 | amb | 524 | |
505 | amb | 420 | --tagging=<filename> |
506 | The name of the XML file containing the tagging rules (defaults | ||
507 | to 'tagging.xml' in the current directory). | ||
508 | |||
509 | <filename.osm> ... | ||
510 | Specifies the filename to read data from, by default data is | ||
511 | read from the standard input. | ||
512 | |||
513 | amb | 429 | |
514 | amb | 152 | -------- |
515 | |||
516 | amb | 975 | Copyright 2008-2012 Andrew M. Bishop. |
Properties
Name | Value |
---|---|
cvs:description | Description of program usage. |