CS 298 Proposal

On-the-fly Map Generator for OpenStreetMap Data Using WebGL

Advisor:Dr. Chris Pollett

Description:

This project is an approach to create an On-the-fly Map Generator For Openstreetmap Data Using WebGL.

OpenStreetMap (OSM) is a worldwide geographic database created from public domain data sources and user created data. It contains a vast amount of data for a variety of features, including administrative boundaries, streets, waterbodies, points of interest, and buildings. Such a large dataset, being difficult to store on servers and render as-is, is fragmented into smaller chunks of uniform dimensions. These chunks are referred to as 'tiles', and are bitmap images in essence, which are in turn the building blocks for online maps. The concept of tiles is then applied to the available geodata in terms of vectors such as lines, nodes and polygons. OSM data can be used in different formats; I have used an XML format of the OSM data (files use .osm extension).

This project, a continuation of CS 297 is to send vector data for maps to the browser and then render the tiles on-the-fly using WebGL. In essence, all of the vector computation is pushed to the GPU on the client(called the shader code). This also means that lesser data needs to be sent to the browser. Henceforth, I will be writing WebGL shader programs for rendering OSM data.

Results from CS 297:
  • My study on the existing tile generators concludes that using CPU would take anywhere between 0.5 seconds to 2.0 minutes, to generate tiles. Hence, using shader programs that run on GPUs will definitely accelerate the process of tile generation.
  • I now know how to query OpenStreetMap data for a particular highway road within a bounded box of latitude and longitude (from CS 297). I would further work on how to create 2D shapes: points of interest like buildings, lakes, roads, etc., within a bounded box of latitude and longitude coordinates using shader programs.
Schedule:

Week 1(Jan 23 - Jan 30, 2015) Talk about the project in detail with the Advisor. Prepare and deliver CS 298 Proposal.
Week 2(Jan 30, 2015 - Feb 10, 2015) Research on how to generate tiles on-the-fly, on the client for the given OSM data.
Week 3,4,5 (Feb 10, 2015 - Mar 3, 2015) Start working on Deliverable 1: Creating Map Tiles on the Client for places/points of interest.
Week 6(Mar 3, 2015 - Mar 10, 2015) Finish Deliverable 1: Creating Map Tiles on the Client for places/points of interest.
Week 7 (Mar 10, 2015 - Mar 17, 2015) Start working on Deliverable 2: Resizing the map according to zoom levels.
Week 8(Mar 17, 2015 - Mar 24, 2015) Finish Deliverable 2: Resizing the map according to zoom levels.
Week 9,10(Mar 24, 2015 - Apr 7, 2015) Start working on Deliverable 3: Add the ability to do filtering on the OSM data returned and generate tiles accordingly.
Week 11(Apr 7, 2015 - Apr 14, 2015) Finish Deliverable 3: Add the ability to do filtering on the OSM data returned and generate tiles accordingly.
Week 12(Apr 14, 2015 - Apr 21, 2015) Start working on CS 298 Report.
Week 13(Apr 21, 2015 - Apr 28, 2015) Work on the draft version of the CS 298 Report - Submit to Advisor and Committee.
Week 14(Apr 28, 2015 - May 5, 2015) Work on the final version of the CS 298 Report - Submit to Advisor and Committee.
Week 15(May 5, 2015 - May 13, 2015) Choose a date and hall for defense. Defend the project.

Key Deliverables:

My deliverables for this project in order are:

  • Code:
    • Draw Maps on the browser (for a given query, the Postgres database returns the corresponding OSM data and the client generates and renders tiles).
    • Add a feature/functionality for the map thus generated to be resizable according to zoom levels.
    • Add an ability to do filtering on the OSM data queried (different ways of drawing the same data) - feature/functionality.
  • Report:
    • A detailed report on the proposed changes and my findings.
Innovations and Challenges:
  • Rendering tiles on the client for the OSM data retrieved from the Postgres database.
  • Filtering of the queried data and rendering tiles accordingly.
References:

[1] Segmentation of OpenStreetMap Data: Generating, Merging, and Distributing Tiles. Jan Behrens. University of Bremen, September 2011.

[2] Web-based 4D visualization of marine geo-data using WebGL. Bernd Resch, Ralf Wohlfahrt and Christoph Wosniok. Cartography and Geographic Information Science, 2014.

[3] Programming 3D applications with HTML5 and WebGL. Tony Parisi. O'Reilly Media, 2014.

[4] http://www.chromeexperiments.com/detail/mapsgl/

[5] https://www.mapbox.com/blog/vector-tiles/

[6] https://github.com/twpayne/tilecloud

[7] http://sourceforge.net/projects/gmapstilegen/

[8] https://github.com/samsargent/Google-ImageMap-Tile-Generator