Skip to content

MARBLElous times ahead

Saturday, 30 September 2006  |  Torsten Rahn

Yesterday at aKademy I committed Marble to KDE SVN. Marble addresses an issue that exists since long: KDE lacks a generic widget that can be used to display geographical maps. Right now implementation as well as data for maps is duplicated all over SVN.

Examples of Use

  • KDE Control Center ( personalisation, timezones )
  • KDE-EDU ( KGeography, KStars )
  • KDE-PIM ( KAddressbook, Kopete)
  • KDE-GAMES ( Risk ;-) )
  • Others: KWorldWatch, KTraceRoute, KDesktop Wallpaper / Screensaver, ...

What it's not: Marble neither tries to deliver a 200% academically accurate map that can be used to do science (so don't use it to control nuuukelear power plants) nor does it try to be a Google Earth clone - at least in terms of primary focus.

Based on the needs for such a generic widget I imposed the following requirements on the project which should always be kept in mind if you plan to contribute to the project (yes, you are very much welcome to do so):

  • Marble uses a minimal free dataset that can be used offline. Currently the total amount of data that is meant to be shipped is about 5 MB.
  • Marble runs decently without hardware acceleration. It just uses Arthur as a painting backend and does NOT use OpenGL (However it largely benefits from EXA according to some initial testing). Extending it later on to support OpenGL as well shouldn't be hard however I don't consider that the primary focus. Depending on your hardware and the maps being displayed framerate is approximately 5-30 fps.
  • Marble uses vector as well as bitmap data: Currently it uses the very old MWDB II data combined with ETOPO 2, which I will update to current SRTM soon.
  • Marble displays the world map as 3D a sphere, because it's more fun to use and less subject to distortion (So with regard to that it's just like NASA WorldWind, Earth3D and Google Earth)
  • Marble should start up almost instantly. Currently it "cold" starts fully within 2-5 seconds. On each subsequent start it takes about one second.

Beyond those requirements Marble already supports "themes" for different topics. In addition to the primary topograpical atlas map there are two other topics: "Earth at Night" and "Satellite View". It's easy to add further topics - I temporarily added a "Moon Theme" on request within 5 minutes of work (it just takes to create two bitmaps and adjust an XML file - try it).

Initial support for Google Earth KML files is there already, so it's possible to display placemarks easily. However the whole placemark rendering is still under development so don't complain if within the next two weeks it will fail or be slow.

Among the TODO items are:

  • Adding support for downloading data via the internet (that should be a matter of a few hours or days in terms of implementation). This might also offer the chance to display Google Maps data.
  • Making placemarks and polygons accessible, so that they could be referenced to Wikipedia.
  • An "editing mode" which might be used to add placemarks manually or via GPS devices - maybe even working together with efforts like Open Street Map.
  • packaging for different plattforms. As Marble only depends on Qt >=4.1 it's easy to compile it for MS Windows. Daniel Molkentin even created an installable .exe files for it some time ago.

If you want to try it these are the steps that lead to instant success:

  • Make sure you've got SVN and at least Qt 4.1 installed
  • svn co svn://anonsvn.kde.org/home/kde/trunk/playground/base/marble
  • cd marble
  • ./buildqmake qmake (make sure that the parameter refers to Qt4's qmake - on Kubuntu you have to type in buildqmake qmake-qt4 ").
  • make
  • bin/marble

For optimal performance it's recommended to add " -O2 -msse " as compile options in marble/src/Makefile once it's generated and recompile. Any suggestions for how to add those options to src.pro directly are appreciated.

For each map marble needs some initialization to be done which is a one-time procedure and might take a few seconds on the very first startup (could be circumvented by packaging the resulting data if needed).

Have Fun :-)