From OpenStreetMap Wiki
Jump to: navigation, search

Google Summer of code proposal: Making topography maps


One important feature missing from current interface of OpenStreetMaps is a topography map. Goal of my project is adding hillshade function to openstreetmap, improving flexibility (allowing user to show/hide hillshade, altitude colors, tourist and cycling tracks), and finally making the map printable.

List of Languages known:

  • PHP, 9/10 - website coding
  • C, C++, 8/10
  • x86 assembly, 5/10 - mainly in combination with C for low-level operating system stuff
  • JavaScript, 5/10 - Played with it a few years ago

This project's goal is to create an interface for adding hillshade to openstreetmap, along with contours, all selectable by user. Side-effect to this is the possibility to adding POIs, roads and other features, based on user's wishes. The core will probably be based on TopOSM, but converting it to be easily used on website. Using this, one could make a good map for planning hikes. Final stage is making it all printable, most likely exporting into PDF with user-configurable settings.


  • Week 1-2: In depth exploration of tools available, design and choosing the best way to do things
  • Week 2-6: Making the code for hillshading and contour generating
  • Week 6-9: Integrating into the core of openstreetmaps website
  • Week 9-11: Creating a way to print out the maps
  • Week 11-12: Review, polishing the code, fixing bugs

Currently involved in:

Finishing school, until half of May.

Handling situations:

I prefer working in a team, but I see no problem in working individually. No doubt, the community will be a useful guide while working on the project.


One of my most relevant hobbies is tourism. I enjoy going on a hike. For this, I really miss good detailed online maps of terrain.


My project would require several components:

  • Hillshade rendering
  • Creating contours
  • Website integration
  • Printing

Hillshade rendering

We need to process heightmap data (either raw SRTM, MassGIS, or something else) into png For this, there are two possible ways

  • Static - generate the data once for the whole earth. This has the disadvantage of huge storage requirements
  • Dynamic - generate the data on-demand, this requires lot of CPU time, but saves bandwidth
  • The third way is mixed, use static for low zoom, and dynamic for high zoom, since it's unlikely that certain places are accessed often.


A problem similar to hillshading, we need to process the heightmap. Static way might not be feasible due to the amount of data it can generate.


After the above is done, we need to integrate it into current For this, there are several interface modifications needed. At the least, we need to create a way to choose what to show. I would imagine a set of layers, where the user can choose which to view.

  • Background
  • Hillshade
  • Contours
  • Roads
  • Hiking/Cycling tracks
  • POI


Finally, we need a way to get the map onto a paper. This could be done using existing PDF export, with changes to include the above paragraph, or maybe a whole different way.