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.