Google Summer of Code application deadline is near and we are still looking for highly motivated students to work on a Marble Virtual Globe project this summer.
One of our favorite topics is "OpenStreetMap vector rendering with tiling support". And in this blog I'd like to describe our current ideas about this interesting subject a bit more in detail:
Basically all the maps displayed by Marble are based on bitmap texture data. Some of these maps even consist of multiple texture layers. On top of these texture layers we display further content like placemarks and possibly even simple geometries (like GPX or KML data).
For displaying this bitmap texture data efficiently we are making use of the popular concept of QuadTiles: the data is arranged in different zoom levels.
A single tile for a certain zoom level is split into four tiles in the next zoom level and so on:
This also works quite well across projections and zoom levels like in the case of the globe:
However there is a single prominent case where it doesn't work as well as we would like it to do: For OpenStreetMap the size of the font in the pre-rendered tiles is very small. Scaling these tiles up and reprojecting them results in a somewhat fuzzy appearance of lines and labels. There is a Marble FAQ for this issue including a workaround for the case of the Mercator Projection.
Still we'd love to provide crisp and sharp rendering for all projections and zoom levels. And the only way to do this properly is life vector-rendering. Konstantin Oblaukhov did an awesome job during last year in his Google Summer of Code project 2011 which provided vector-rendering for single OSM files. It got integrated with Marble 1.3 and we suggest you to give it a try. Click the link for the video below or click the thumbnail for a side-by-side comparison between the bitmap and vector map:
Marble - OSM Vector Rendering Video
Currently OSM data must be downloaded and opened manually by the user. During this GSoC 2012 project a QuadTile scheme should be developed such that Marble can open and display the right part of the map without any further user interaction (other than panning/zooming).
This will require creation of special pre-filtered OSM files and extension of Marble's parsing and download capabilities.
We suggest the following rough mile-stones in order to come up with a working prototype:
- Develop a tiling scheme that maps lon/lat/zoom tuples to filenames and vice versa
- Use a tool like osmosis to create tiles for a sample region (say, the city you live in)
- Extend Marble's .dgml format to be able to specify .osm files as input (and your tiling scheme)
- Improve the current vector rendering to handle different zoom levels better
- Add more OSM elements for vector rendering in Marble, improve existing ones (e.g. street names)
- (Optional) Work on a .pbf parser for Marble to read .pbf instead of .osm files (much faster)
- (Optional) Look into a new file format tailored for OSM vector rendering for Marble. Research existing formats like mapsforge
- (Optional) Create a tool that automates the process of creating the tiles needed by Marble
If you are interested in this interesting project then you should act quickly: Deadline for applications is on Friday, April 6th, 2012. Apart from the usual GSoC student application guidelines your application should:
- describe the benefit of the feature from a user's perspective (including self-created mock-ups and screenshots)
- provide a rough technical explanation in your own words what the project will be about.
- state why you are the best person to master this project.
So if you are a student then we are looking forward to your application! Don't hesitate to ask us any questions.