OSGeo Cartographic Engine
Motivation
There are plans about new cartographic tools (map composer) for QGIS, as well as for GRASS. We suggest to develop a joint library for the various functions which could be shared across GRASS, QGIS and other projects with bindings to Qt, Python etc. The GUI part will be done within the individual software projects.
Functionality
Shared functions may include
- class breaks (various algorithms)
- histogram analysis
- color ramps
- RGB and possibly CYMK support (aka color transformations) etc.
- Algorithms for intelligent label placement
- Symbology management
- map surround
- legend
- cartographic templates (ie. predefined map styles)
Programming Language
- C? C++?
Perhaps we could implement the core in C++, but provide a high level C API for applications and environments wanting to drive the library. C++ is a strong implementation language, but presenting a C API to the outside world reduces complexity calling from other languages or compiler versions and reduces "interface fragility".
Output Formats
What output formats do we want to target. I think at the core this question comes down to whether we want to render everything to a raster format or whether we wish to preserve linework, and text in non-raster form. That is, whether output output is a raster format, or a raster+vector+text format like postscript/pdf.
If a cartographic product is the objective, I think selection of an output format like PDF makes a lot of sense, but it does make interactive composition more complicated and it is possible we have limited pdf/postscript development expertise in our developer community.
Existing code to be recycled
There will be code in GRASS, QGIS, the Python Cartographic Library (http://zcologia.org/cartography) and other sources which could be integrated (check license compatibility). Please indicate precisely where to find the source code, license, programming language:
- Label placement code:
- Mapserver labeling code (MapServer License, C language)
- GRASS v.label.sa (GPL, C language)
- Color management:
- MapGuide, CalculateDistribution and Color (LGPL.C++)
- OpenJump ?
- Stylization:
- Postscript/PDF output:
- PNG output:
- GRASS PNG driver
- See AGG below
- Class breaks:
- GRASS different algorithms for class breaks (GPL, C)
Technologies
- AGG (sophisticated rendering of vector/text graphics to raster format - used by MapServer, MapGuide, Mapnik).
- Freetype - text management and rendering library
License
It is proposed to license the OSGeo Cartographic Library under LGPL. The license needs to be GPL compliant.
Interested people
- Markus Neteler (proposer)
- Horst Düster
- Martin Landa
- Marco Hugentobler
- Frank Warmerdam
- Agustin Diez
- Moritz Lennert
- Dave Sampson