This paper is intended to introduce a system, which allows for its users to collect lane-grained map data, detailed on a proof-of-concept level. The system merges the data collected by different users into a consistent map, which could be used even for navigation purposes.
The application supports teamwork by assigning a map segment to each volunteer data recorder. The volunteer becomes responsible for this segment, until he commits the changes he made. These segments are handled and will be merged in the future into a consistent map by the main server. The application is designed as a distributed application, with two major components besides the main server.
One of these major components is the modeling application, which allows the user to draw the graph-based model of the road network, and assign all information to the model elements he is able to tell before the field-work. This capability helps to reduce the amount of work needed at the field. The model used by the application is an own design, and discussed by this paper in details.
The modeling application creates a field-work plan, which is a circle, hitting all points where data recording needed. This circle is optimized to be as short as possible. The Hamiltonian cycle finding algorithm used for this purpose is discussed in this paper among other graph algorithms.
During the field-work an Android application guides the users by the content of the filed-work plan, created by the modeling application. This mobile application asks the user to provide the data needed to complete the map, and produces a log file. This log is processed by the modeling application.
This paper contains a short summary about the GPS navigation system, which provides the position information. But by the effects influencing GPS accuracy, the paper goes more into the details, because this is the most important aspect for the map creation.
The system components are written in Java, because the secondary goal of this project was the practicing of the use of the Java language and its API-s both on the client- and the server-side, including the studying of the popular Android platform.