GSOC: Implemention of GeoNames support and ExtendedData tag handler to Marble

Hello viewers,

I am writing this blog to share the progress of work I have done till now as Gsoc 2010 participant. The official date of writing code was 24th May,2010. In the meantime, I was unable to resist myself to develop marble. So I decided to change the data source of city placemarks from World Gazetteer to GeoNames. GeoNames has great collection of over 8,000,000 geographical names. Beyond names of places in various languages, data provided by GeoNames include latitude, longitude, elevation, population, administrative subdivision and postal codes. Marble now shows all cities with a population greater than 15000. This has solved various bugs in Marble such as mirrored coordinates bug. This displays the correct name for many Indian cities like Delhi, Mysore, Hyderabad, Meerut. Screenshots of Marble using World Gazetteer and GeoNames data source are:

The text file containing data of city placemarks is converted into KML file. The cache files are generated from the KML files by Marble which are shipped in the package and installed. However that there was a bug in Marble which prevented regeneration of these cache file. I fixed this bug to develop the cache from KML files. This fix will be back-ported to older version of Marble in future.

After the start of official period of writing code, I implemented the ExtendedData tag handler. <ExtendedData> element offers following three techniques for adding custom data to a KML Feature.




After having discussion with Bastian Holst and Torsten Rahn, we decided to use basic technique of adding untyped data/value pairs using the <Data> element because of its simplicity and ease of implementation. <ExtendedData> element will store all the marble specific information like timezone, gmt, dst, bookmark, geonameid etc. GeoDataExtendedData class stores the data object of <ExtendedData> element in QHash. In the forthcoming days, I will display time zone information of all city placemarks using <ExtendedData> element. Its structure will be :-

Andorra la Vella




That's all for now. Thanks for reading it... :)