Scalefactors and Metawriters
We've nearly reached the halfway point in Google Summer of Code 2010 and the Mapnik project's inaugural year of participation. We are honored to have two great students working actively with the Mapnik codebase on unique projects, thanks to Google and the team at Google's Open Source Programs
It is an exciting time, as both are actively committing either to Mapnik trunk or testing branches of Mapnik's SVN
Hermann Kraus is working on adding support for "Metawriters" that can be attached to Mapnik Symbolizers - the idea here is to be able to output (highly configurable) metadata about what features were able to be placed and rendered to a mapnik map. This information could, for example, then be directly used in an OpenLayers map to make clickable points of interest. Hermann is currently targeting Mapnik's PointSymbolizer and outputting geojson. It may not be obvious how powerful this could be until you think about the ability to leverage caching of this json along with tiles - think really fast on-demand client lookups of tiny json tiles for awesome map interactivity.
Carlos López is working on adding high resolution output support to Mapnik, by finding all the critical places within Mapnik's rendering pipeline where styling directives can be scaled up by applying a scale factor (determined from desired paper size and resolution). If you want to print a small map on a letter or a4 sheet at very high ppi (pixels per inch) or want to print an enormous plotted map, Carlos's work will ensure that your output looks fantastic without needing a single tweak to your stylesheets. The goal is that your fonts won't shrink, dashed lines won't squish, and - combined with amazing new SVG reading support (more on this soon from Artem!) - gorgeous high resolution map icons will render at the proper size.
And to think we're only halfway through! Much more exciting developments await I'm sure.
But, as important as the progress on code, is the process of learning. And I'm not just talking about the students - as the mentors - Artem and I, have been learning too.
A Process of Learning
It has been informative to watch Herm dive into Mapnik's codebase, as he brings experience from 3 previous years of google summer of code and has previously worked on other OSM related mapping projects. In addition to his specific project, he has already exposed several placement bugs and contributed an excellent patch to the MarkersSymbolizer, which other developers had never pulled off. New developers can have the sharpest eyes, and pointing out problems or holes in the code base has immense value.
Carlos is in his first year with GSOC, is using Linux for the first time, and is new to mapping in general - but this has not stopped him for a moment. It has been impressive and inspiring to watch him climb past the jargon, researching difficult topics, and translate his new understanding to not only working code but also, just this week, a great testing framework for multi-resolution output using the latest features of nik2img. I wish I had had the opportunity to learn open source mapping as fast as Carlos! At least this summer I am along for the ride with him :).
One particular thing I've seen in working with Carlos lately: when you are new to a topic the places you get tripped up are sometimes due to the shear complexity of the material but also, too often actually, due to landmines left by others - like jargon, missing documentation, unfinished code, or accidental compile errors. Carlos may not know this yet, but he has been mentoring me too by reinforcing things that I can do better, both as Mapnik developer and as an open source contributor. Thanks Carlos!
A final note of interest: Carlos is working closely with his friend and classmate Waldemar Quevedo, who is writing a django-based web application for easy printing of OpenStreetMap maps that will leverage the multi-resolution work (This is also OSM GSOC project). Check out his latest news at http://openpapermaps.com.Posted by Dane Springmeyer on 06 July 2010.