Sunday, May 31, 2015

GSoC 2015 with Marble

Great news! I've got selected to this years GSoC. From now on, I'll be posting here frequent status updates about my progress while working on the project "Improve Marble's OSM vector rendering and printing support".

KDE and Marble

One of the reasons why I choose KDE as my mentoring organization is that I already used their Plasma desktop for quite a while now, thus I'm a little familiar with KDE Applications, but the main reason is that my programming skills and knowledge was best matched with KDE's Marble project.

Application to GSoC

During the application period I had a lot of fun while getting started. My introductory tasks revolved around Marble's Ground overlay feature in the Edit(Annotation) plugin. I had to use git-bisect to find a commit in which a regression occured. Then I had to implement manual resizing and rotating for the GroundOverlay, and correcting some bugs. These were great tasks to get me started working as a developer for Marble. Frequently speaking with my mentor about the changes and ideas that I wanted to implement was one of the best and most memorable part of it.

About my project

Marble has a great rendering engine, which is fast (Marble starts up in 2-5 seconds), reliable and allows developers to easily improve some of its features. My projects main goals are to improve the following parts of the program: the rendering of the .osm file based vector tiles, the picking of the texture tiles, improving printing support. I also intend to fix any bugs that I may encounter in the process. This would improve Marble's rendering and maturity too, so the end-user should be more satisfied with the application.

Let's start coding!

Though the coding period started a week ago, I've only got time from now to work on GSoC, because I didn't want to throw my school projects aside, those are important too.

So now that I've completed my school project(a simple tile-based rouge-like rpg), I can begin to work on my GSoC project. The not-so-good thing is that we have a quite early mid-term evaluation period(June 26. - July 3.), so we need to get some of our work done by that time.

I've started to work on the OSM vector tile rendering part, so the polishing of the rendering will be my main task for this month. I'm currently working on the outlines of the streets and highways. Just to get you the idea, I'll show some pictures about it.

This is how is it now in Marble:
An .osm file loaded with into Marble.

The rendering performance is good, but it needs a little polishing in order to achive something similar to the one that's on the OpenStreetMap website. This is what it should look like:
Same region, but from the openstreetmap website.

And finally this is my progress for now:
It's a little cartoon-like.
The streets now clearly have outlines, but it's not the best result we can get. For now, this is just an experiment of what can be done. I'm only drawing the lines twice, first the outline color, then the fill color, but it's done par ways, this is why it gets outlines were it shouldn't. To be honest, it took me quite some time to find the files in which I need to work, but as you can see, it's working now, so my next task will be to get it to an acceptable state.

That's it for now. Next time I want to share my progress on this task, possibly the completed version then.


  1. Good that you're working on the vector rendering. The bitmap tile based map doesn't look great IMO (too blurry). Do you know if there's a chance there might be a server in the future for providing the vector data so we would actually get a usable vector map?

    1. I intend to fix that blurriness issue too. Until then, you can use the +/- keys pointed out by Dennis Nienhüser, but I know that the end-user is used to the controls with the mouse(buttons and wheel), so fixing the zoom with the mouse-wheel is one of my tasks for this GSoC. Stay tuned for my progress, sooner or later I'll post about that issue too :)

  2. You can get a sharp bit-map by switching to Mercator projection and zooming only with +/- keys. Then Marble zooms only between tile levels and the projection is the same as the original projection, which means that every pixel from each tile image corresponds to exactly one pixel of the monitor.

    I wouldn't mind looking into setting up our own vector tile server. KDE has a large community that could raise the money needed for the hardware and traffic. However we need to have a scalable software solution first - which file format is being transferred, how are tiles generated and updated from e.g. planet.osm, how to handle versioning.

  3. Have you seen this?:

    Qt native OSM OpenGL rendering using the Mapbox GL engine.

  4. This comment has been removed by a blog administrator.

  5. This comment has been removed by a blog administrator.

  6. This comment has been removed by a blog administrator.

  7. This comment has been removed by a blog administrator.

  8. This comment has been removed by a blog administrator.

  9. This comment has been removed by a blog administrator.

  10. This comment has been removed by a blog administrator.

  11. I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.
    frameless glass railings

  12. Thanks for sharing info. Keep up the good work...We hope you will visit our blog often as we discuss topics of interest to you
    bathroom hand towels

  13. Great You have beautifully presented your idea about the american standard plumbing fixtures in this blog post and i like this blog.
    long bathroom sink with two faucets

  14. To check out become in your blog nevertheless environment remedy obviously merely a small little submits. Reasonable way of possible long term, We're book-marking at a time safe types cease increases collectively. marble polishing service