-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathREADME
103 lines (81 loc) · 3.97 KB
/
README
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
Biker tries to be a nice software for planning bike tours. It is
possible to use it without having a working internet connection, if
you downloaded some map data beforehand.
Usage:
~~~~~~
First, you need to compile it:
protoc --cpp_out=. src/Database/Parser/pbf/{osm,file}format.proto
qmake
make
You should now be able to start it, typing:
./Biker
If you have a working internet connection, it should start
downloading some map data. To be able to do routing, you need to
load some OSM data. You may use pure .osm files (you can get files
for some regions from "http://download.geofabrik.de/osm/"). Press
"Ctrl-O" to open an .osm-file (or choose File->Open). It might take
some time to load a file, and it uses a huge amount of RAM. Later
on, I want to improve this part.
If you want to cut some parts out of a file (e.g. to speed up
loading and decrease RAM usage), you may use "osmosis" to do so.
Planning a route should be pretty intuitive (after having opened an
.osm file), except zooming: use a right click to zoom in, and a
click on your wheel (or both buttons) to zoom out. This will be
improved later on.
It is possible to adjust some parts of the routing algorithm via the right panel.
Please excuse the crappy i18n. Guess it? Later on, ....
Dependencies:
~~~~~~~~~~~~~
Biker depends on:
- libqwt5
- libcurl
- libzzip
- libprotobuf
and, of course, qt4.
If you experience compile problems, try to install these libraries
(developer version). If you experience problems with libqwt5, adding
a link in /usr/lib and /usr/include might help:
ln -s /usr/lib/libqwt-qt4.so /usr/lib/libqwt.so
ln -s /usr/include/qwt-qt4 /usr/include/qwt5
It might be necessary to change the names. You can also adjust the
name of the library in the .pro-file
Known Bugs and shortcomings:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Biker crashes when changing the map type after having planned a
route. This is due to QMapControl was not made to change the base
map layer after it has been created (or I am unable to use it
correctly ;D).
-It needs some time to change between two map layers. This is due to
zooming with QMapControl to a specific detail level makes it zoom
through all levels above. I think it is not possible to change this
behaviour without changing some implementation detail of
QMapControl. It did not bother that much ;).
-Biker uses tons of RAM. This is not due to someone elses work ;D.
Since I did not have the time to write a better database backend up
to now, at every startup we need to parse an osm file (XML or PBF)
and hold everything from there in RAM. If someone is willing to
change that, have a look at Database/osmdatabase.hpp and
Database/osmdatabasewriter.hpp .
-Biker is not that fast on routing as you might expect. This is due
to, guess it, the routing algorithm used. I use AStar because it is
easy to modify the cost function without the need to change anything
else. Being able to change the cost function, especially to avoid
hills was a design goal of the program.
There are some other, faster algorithms where you need to precompute
parts of the graph, but you are not free to change the weights later
on (if I got it right, which might not be the case). In Every case,
it is more work to implement it. Examples are "Highway Hierarchies"
and its successors.
If you want to implement your own routing algorithm, have a look at
Routing/routing.hpp , Routing/metric.hpp and Routing/astar.hpp . You
will also find an implementation of Dijkstras algorithm in
Routing/dijkstra.hpp .
-Using qmake as build toolchain isn't that nice. I was thinking
about changing to cmake later on, but did not use use that tool up
to now and did not have the time to get used to it. Manually
creating some header from .proto files is not okay, too.
Thanks to:
~~~~~~~~~~
Kai Winter, who wrote QMapControl.
Hermann Kraus, who wrote a tool for downloading and parsing SRTM data.
Christian Vetter, who wrote MoNav and made it possible for me to parse .osm.pbf files.