In my proposal I included a list of topics that would help me be prepared for working in the project. This is that list and the things I've been doing in each:
General concepts of cartography and mapping, such as projections and symbols.
I've been reading 'Web Mapping' by Mitchell.
General concepts used in Geographic Information Systems and mapping applications, such as shapefiles, symbolizers, styling, etc.
Use of Cairo and AGG graphics libraries.
I've been learning the basics of Cairo by trying the code samples in http://zetcode.com/tutorials/cairographicstutorial/.
Use of GDAL utilities.
I installed gdal-bin to make use of the utilities (gdalinfo to take a look at the headers of TIFF images with geospatial information).
I rebuilt Mapnik in order to use the GDAL plugin.
I finished trying the code in http://mapnik-utils.googlecode.com/svn/example_code/gdal/.
SVG and PDF specifications.
Implementation of the examples found in: http://mapnik-utils.googlecode.com/svn/example_code/.
I finished trying the code in:
Check tickets #343 and #389.
I've been reviewing my notes of the Computer Graphics class.
I've been reading 'Introduction to Computer Graphics' by Foley, to remember the basic concepts of this area.
I've spent this last week of the community bonding period studying the code base. My main activity has been the construction of a class diagram in which I'm including almost every detail of the implementation. This diagram may not be useful for someone trying to get a general picture of Mapnik's design, but is useful to me in two ways:
- It lets me explore the relationships between classes, allowing me to identify the areas of the code that are concerned with scaling/resolution.
- I'm learning a lot by just reading the implementation. There are many C++ idioms I didn't know about and many Boost objects are used throughout the code.