Introduction
The idea about this project comes from the effort of creation of high-quality street map with good support for routing and geocoding. This type of data consists of coordinates of the map features and additional metadata containing e.g. type of the road or driving restrictions. Usually, geographic part of data is captured in field by GPS or digitized from satellite imagery to vectors in Geographic Information System (GIS). The problem is to capture metadata with enough details, some road properties are essential for good decisions in routing software.
Aim of this project is to help with collection of geographical data in field (i.e. driving a car with GPS) by creating a flexible system that stores collected data from different sources (GPS, microphone, camera). Then, the software will allow viewing the collected data easily and help the user with digitizing process providing effective editing tools and visualization options. As a result, users should get system capable to work with big amounts of geographical data with no need to use other (commercial) GIS software.
The project will make use of Quantum GIS (QGIS). It is a piece of software licensed under GNU GPL for visualization of geographical data. It features also some basic editing capabilities. Its libraries allow 3rd party software to load, read and display geographical data. QGIS can be extended by plugins in either C++ and Python. This makes it a good choice as a platform - for both handling geographical data and displaying it.
Data collection
Data collection component will be designed for usage in a vehicle equipped with a computer and GPS. As input data from GPS we will support NMEA-0183 format (which is widely used in industry). Optionally, more devices can be used to allow more detailed digitizing. There is planned support for following additional data sources:
- one or more video cameras - for capturing video, useful for gathering more details about the road and surroundings. When enhancing details of the roadmap it's possible to watch the video, look for road signs and assign additional attributes to the roads (mainly turning or speed restrictions). It might come useful also for finding out street names and house numbers
- digital camera - for taking pictures of important objects or signs. The software will also allow user to import pictures from a digital camera and using time information from EXIF together with GPS data it will mark on map where approximately the pictures were taken.
- microphone - to allow taking voice notes.
The architecture should allow adding other types of devices as new sources of data. While driving, data will be recorded from the different sources and stored on hard drive for further digitizing.
Graphical interface should display current position on map and update it regularly. By default GUI should pan the map automatically so that current position is always visible. User will be able to zoom or pan the map manually. If user has access to some data of the region being mapped (e.g. aerial imagery) he will be able to use them as background of the map. This helps to determine which areas or roads are not yet covered. The collection shouldn't require any input from user during data collection to allow also mapping without operator (only driver). Operator in the vehicle should be able to add more information to the recorded data - e.g. mark position of some important waypoint or place that will need special attention later during postprocessing.
Data replay
Once the data will be stored, another piece of software will be needed to replay it. It will show timeline and allow navigating in the record, playing it with normal or higher speed. While playing the record, position from GPS should be shown on map (again allowing to load some background maps) with possibility to view data from other sources in the record, e.g. video or audio.
Map creation and editing
Editor is an important part of the project because affects greatly overall time spent with digitizing and assigning attributes. Quantum GIS features a simple editor with all basic functions, e.g. create features, edit vertices. It is good enough for editing small datasets without topology, but not suited for greater datasets with topology. Here's a list of necessary additions:
- allow topology editing - it should detect topology (when starting editation mode), provide tools to correct topology problems, check whether topology is correct during editing
- scalability - support for greater datasets
- undo/redo support
- options to customize visualization in editing mode - whether to use simpler (and faster) rendering or use more visually pleasing rendering
- editing profiles - for different modes of digitizing with different constraints
These tools will be supported:
- create / move / delete feature
- add / move / delete vertex
- add / move / delete hole in polygon
- edit attributes
- split and join features
Besides the improvements mentioned above, editing will be enhanced by some custom tools that will simplify the process of digitizing from collected data. Users are likely to need following operations:
- select some part of the track from GPS (e.g. by marking start- and endpoint) and extraction of the polyline
- simplification of the geometries captured by GPS
- join feature to roadmap and correction of topology
- setting commonly used attributes by a single click
We will investigate usual workflows during digitizing and design the tools appropriately to allow maximum efficiency in frequently repeated tasks.
Editing tools must be ready for multi-user environment (i.e. more users editing the map at the same time). If desired by the user, editing tools will keep history about the edits in database - saving previous geometry and attributes of features together with time of the edit and user in charge.
OpenStreetMap integration
The project should help people interested in mapping roads (either volunteers or commercial map vendors) by providing an open and extensible platform. In recent years
OpenStreetMap (OSM) has gained popularity because in many countries there were no freely available digital roadmaps. This project is intended to support OSM data format and provide good editing capabilities for it. There are already some editors available for OSM, but they are only single-purpose programs with limited functionality. Our intent is to connect OSM with real GIS software:
- downloading data using API
- visualization of the data (loaded from file or downloaded from internet)
- full editing capabilities, including modifications to tags and relations
- uploading of changed data to the server
Quantum GIS changes
While some of the work will be done as plugins for QGIS, there are several areas in QGIS that need improvements:
- allow graceful handling of big datasets - to be able to work well with layers containing about 1 million features
- improve editor - as described above
- improve rendering capabilities - visualize one-way roads with arrow signs, draw vector layers in multiple stages (to allow rendering of roads with outlines)
- manager of layers in geodatabase - create new layers, delete layers, view metadata, load and dump data
License
All source code produced during the project will be licensed under GNU GPL v2.