Mapnik 3.0.6 Release
Oct 08, 2015 | Artem Pavlenko
Mapnik 3.0.5 Release
Sep 17, 2015 | Artem Pavlenko
Mapnik 3.0.4 Release
Aug 26, 2015 | Artem Pavlenko
Introducing a Color Blind Filter
Aug 14, 2015 | Blake Thompson
I was prompted by reading this conversation recently about color blind maps. I realized suddenly that we don’t support a way for our cartographers to easily design maps that would be easy to view by a color blind individual. Determined to change this, I quickly dashed off to my development batcave!
Mapnik 3.0.3 Release
Aug 12, 2015 | Artem Pavlenko
Very pleased to announce 3.0.3 release! This release adds three new image-filters to simulate types of colour blindness - great work Blake! We restored support for legacy format for setting JPEG output quality - welcome back
jpeg85. As always the main focus is on stability, performance and addesssing issues which we discovered while testing. Check out v3.0.3 Changelog for more details.
Mapnik 3.0.2 Release
Jul 31, 2015 | Blake Thompson
As promised in our last post, the next release of Mapnik was to follow shortly. This release focuses on having a well tested and functional SVG parser. While SVG functionality was present in earlier releases, this is a vast improvement in speed and efficiency over the previous parser. Additionally, as part of this release we have removed the dependence on libxml2 from the mapnik library.
Node Mapnik 3.4.1 Release
Jul 31, 2015 | Blake Thompson
Node Mapnik has a new version that has been released today. The release features improved speed surrounding mapnik-vector-tile and support
0.8.5 version of mapnik-vector-tile. This version of Node Mapnik is built against core Mapnik
Mapnik 3.0.1 Release
Jul 30, 2015 | Blake Thompson
As promised we are attempting to make releases of Mapnik much quicker! This allows others to more easily build libraries on top of Mapnik! Less then a month after our intial release of the 3.X series, we are proud to announce 3.0.1. This release mostly features bug fixes from mapnik 3.0.0 and should be more stable!
Mapnik 3.0.0 notes for cartographers
Jul 11, 2015 | Paul Norman
With the Mapnik 3.0.0 release there have been important changes that impact cartographers. It is possible to write a stylesheet that works with both 2.2 and 3.0, but it some attention to the changes.
Mapnik 3.0.0 Release
Jul 07, 2015 | Blake Thompson
It is official! We have released Mapnik 3.0.0! This has been an effort over two years in the making and we are beyond excited to arrive at this milestone.
Mapnik site redesign
Jun 10, 2015 | Amy Lee Walton
Mapnik.org has a new look and easier access to updates, code, and documentation. Quickly copy code snippets to run and render maps using Node.js, Python, or C++, pair with a stylesheet for custom styling, and link to detailed API docs.
Mapnik 3.0.0 Release Candidate 3
May 27, 2015 | Blake Thompson
We had so many people testing 3.0.0-rc2 that we were able to find a lot of issues quickly. In order to help people testing we have decided to push out a release candidate 3! Thank you so much everyone for your help! Not all the issues are resolved yet, but we are working hard to be done by early in June with the official 3.0.0 release.
Mapnik 3.0.0 Release Candidate 2
May 21, 2015 | Blake Thompson
We are on the final hurdles for a 3.0.0 release! We have officially released and tagged a 3.0.0-rc2 build and are in a feature freeze. We expect the current C++ API not to change and could really use help testing our release candidate.
Simple Mapnik Python Installs
May 06, 2015 | Blake Thompson
I have been hard at work the past couple weeks trying to do something that has been asked for many times from people in the python community. A simple way for Python Mapnik to be installed via
easy_install. While we already had a way for a pypi package to be installed in mapnik2 which is on pypi it took some time to configure everything properly.
Approaching 3.0 Release
May 05, 2015 | Blake Thompson
It has been a long time since we have made a post, but work on Mapnik has not stopped! We are very close to a Mapnik 3.0 release! This has been a major milestone we have been working on for several years. Stay tuned for more details as we get closer to the release!
Jun 04, 2013 | Artem Pavlenko
The Mapnik team is pleased to announce the Mapnik 2.2.0 release. This time around we’ve been focusing primarily on stability and performance, but there are some new cool features too. It’s fun this release coincides with this weekend’s SOTMUS in San Francisco and we hope to see you there!
WKT geometry parsing benchmark
Apr 19, 2013 | Dane Springmeyer
In addition to beautiful rendering capabilities Mapnik also offers a fast C++ and Python API for working with raw geo features. You can create them on the fly from a variety of formats including wkt, wkb, and geojson. This feature allows creative programers to use Mapnik like you would OGR to read or create data and output it to other formats.
Summer of Code 2012 - Summary
Oct 06, 2012 | Hermann Kraus
Google Summer of Code 2012 is over now. All the previous posts where rather
technical so I would like to talk about applications and show some beautiful
images in this post.
Stamen, Compositing, and Mapnik 2.1
Aug 27, 2012 | Dane Springmeyer
What if software existed that combined the power of Photoshop-like image effects with Illustrator-like vector transformations that was fully open source, spatially capable, and could handle big data like OpenStreetMap? Well, hopefully this future will feel near as you start using Mapnik 2.1.
Aug 24, 2012 | Artem Pavlenko
Summer of Code 2012 - Collision detection, offsetting, and performance
Aug 13, 2012 | Hermann Kraus
Building on my work from last week
I completed several smaller tasks this week. While each task on its own was not
very big, together they have lead to a state where almost all tests pass!
Summer of Code 2012 - Line placements and font sets
Aug 04, 2012 | Hermann Kraus
Last week I implemented
point placements for the new HarfBuzz text shaping/rendering code. This week
my goal was to implement line placements, but I started with something different:
Aug 03, 2012 | Dane Springmeyer
The Mapnik team is pleased to announce Mapnik 2.0.2, the second stable bugfix release in the 2.0.x series, and also the last as development is now focused exclusively on the upcoming 2.1.x series (the one that supports compositing).
Summer of Code 2012 - Point placements
Jul 31, 2012 | Hermann Kraus
This week my code finally has reached a state where everybody interested can
try it. After having implemented line breaking and fixing a few bugs
last week I implemented
the placement finder algorithm for point placements this week.
Summer of Code 2012 - Line breaking
Jul 22, 2012 | Hermann Kraus
Summer of Code 2012 - Half time
Jul 13, 2012 | Hermann Kraus
After half of this year’s Summer of Code is over I have the first real results to present you:
Summer of Code 2012 - Text processing
Jul 02, 2012 | Hermann Kraus
Summer of Code 2012 - First steps
Jun 26, 2012 | Hermann Kraus
As I follow up to my last post I will give a short overview what has happened this week and what I will do next:
Summer of Code 2012 - Libraries
Jun 19, 2012 | Hermann Kraus
Mapnik Code Sprint 2012 - Day 1 Recap
Jun 17, 2012 | Dane Springmeyer
Yesterday was the first day of the June 2012, Washington DC Mapnik code sprint.
Mapnik Code Sprint 2012
Jun 01, 2012 | Artem Pavlenko
Improving support for non-latin languages
May 29, 2012 | Hermann Kraus
This year Mapnik was not selected as a Google Summer of Code Project, but as Mapnik is OpenStreetMap’s main renderer I was selected to work on Mapnik text rendering by the OpenStreetMap project.
Current state of Mapnik’s text rendering
Apr 27, 2012 | Artem Pavlenko
I’m going to Amsterdam for WhereCampEU this weekend. The attendee list looks awesome this year, I look forward to seeing old and new faces and talking about Mapnik/Tilemill and all things Geo. See you there :)
Using image filters and compositing together
Apr 26, 2012 | Artem Pavlenko
Following up last week’s post about smart halos, I wanted to share some ways of using compositing and filters together to achieve interesting effects.
Cartographic trick of the day
Apr 20, 2012 | Artem Pavlenko
This is a short post to share some techniques I came up with while implementing compositing and image filtering in Mapnik core.
Apr 10, 2012 | Dane Springmeyer
The Mapnik team is pleased to announce Mapnik 2.0.1, the first stable bugfix release on top of 2.0.0. The notable thing about this release is that it fully supports PostGIS 2.0.
Faster Map Loading
Apr 06, 2012 | Dane Springmeyer
Latest from mapnik development team
Feb 10, 2012 | Artem Pavlenko
Windows binaries (Release Candidate 0)
Nov 29, 2011 | Artem Pavlenko
Hello, Windows users! Thank you for your patience.
Sep 26, 2011 | Artem Pavlenko
The Mapnik team is pleased to announce that Mapnik 2.0 is finally here! We've jumped from 0.7 to 2.0, not because we got confused with our numbers, but to reflect that this release represents a big step forward for the project. We believe Mapnik 2.0 will provide a much more flexible and expressive platform for creating beautiful maps. For full details see:
Thanks to all contributors and also a supersize thank-you as always to Dane Springmeyer for managing and inspiring this release. This is a recommended upgrade for all Mapnik users.
NOTE: This release is going out without Windows binaries just yet, as a source distribution only. We're planning to follow up with Windows and Mac OS X binaries asap.
Raster Reprojection lands in trunk
Sep 16, 2011 | Dane Springmeyer
Alberto Valverde has recently been hard at work getting initial support in trunk (to be part of Mapnik 2.x) for on the fly reprojection of rasters.
Thanks to Alberto for all his hard work on this and for his company Meteogrid for supporting his contributions to open source
Carto parser wrapup
Sep 07, 2011 | Colin Rundel
Recent work has focused on implementing the dynamic features of carto, namely variable and expression handling. A simple example demonstrating this processing is included in the gist below:
With these features implemented we are able to work with complex styles like the open_street_dc map from the tilemill project. While more debugging is necessary the parser is able to produce valid output which can be rendered:
Hopefully we will be able to resolve the remaining issues in the near future with the goal of merge both the parser and generator into trunk to be part of Mapnik 2.1.
Sep 02, 2011 | Herman Kraus
Now that Google Summer of Code is over I'd like to show you some of theresults:
I already posted information about the newtext placement system. No big changes happened here, just a fewbugfixes. I also added some testsand reference images.
Improving text formating was the second half of my project.
Currently when you want to label a peak like thisName
you define these two symbolizers:The image will look like this:
This usually works, but it has some limitations. For example let's see what happens when the name gets a little longer:
Mapnik breaks the long name and the elevation disappears, because the offset is not correct.
Now let's have a look at how it is done with the new placement system:You only define one TextSymbolizer but with a different syntax:(Note: is the XML encoding of a newline character)
As you can see Mapnik automatically takes care of correct line spacing, no need to calculate offsets manually.
Backwards incompatible changes
To make this work some backwards incompatibilities had to be introduced.
Parameters you can change
You can change the following text attributes with the Format instruction:
But you are not limited to using a fixed format. You can implement your own class in C++ to do the formating. It's very simple:In the same way you can do custom text formating:
The code is ready, now it's required to test it on larger styles to find any remaining bugs. Python bindings also have to be updated to fully support the new features. When this is done the code will be released as Mapnik 2.1 as it's to late in the release cycle to include it in Mapnik 2.0.
Aug 29, 2011 | Dane Springmeyer
Did you know Mapnik has some exciting Ruby bindings taking shape on github?
Well, you should check them out. Elliot Laster is the fine fellow who has been working on them and over 200 tests are already passing.
After compiling mapnik trunk on OS X here is how I built the ruby bindings:
And using the Mapnik2/trunk nightlies on ubuntu here is how you can get things running:
Mapnik GSOC 2011 wrapup
Aug 25, 2011 | Dane Springmeyer
Mapnik GSOC wraps up this week. Its been an amazing summer. Stay tuned to this blog for detailed updates from the 2 students who completed their projects (one, the Windows Build System had to be put on hold). In the meantime see my debrief email to the Mapnik community lists here
Stylesheets and GSOC - Halfway
Jul 18, 2011 | Colin Rundel
As Herm and Roel have already posted, we've reached the halfway point of Google Summer of Code 2011 and all the projects are starting to come together nicely. My work with carto is also progressing and is rapidly approaching usability.
For the last couple of months of the GSOC my work has focused on two parallel and related tracks, developing both a generator (allows for translation of exisiting xml stylesheets into carto) and a parser for carto in C++. These code bases currently reside in two different github repositories (carto-generator, carto-parser).
The current status of the generator is that it is a nearly feature complete and should be usable by anyone who is interested. As far as I know the only major feature missing from the example is the ability to handle metawriters which is being put off for the time being. However, what this part of the project is lacking is testing and I would certainly appreciate anyone with interest and XML styles to try running the example translator and let me know what breaks. The generator can be run as follows:
$ ./example tests/test.xml
The second part of the project, and definitely the more important, is the development of a native C++ parser for carto stylesheets. The parsing of the stylesheets occurs in two steps, the first reads the file and builds an abstract syntax tree based on a language grammar and the second traverses the AST and builds the map and related styles.
Parser Next Steps
The current status of the carto parser is that the grammar and AST constructors have been completed with work still being done on the code that translates from the AST into a mapnik map. Hopefully in the next week or two translation of symbolizers will be completed which will allow translation of styles and allow for rendering of simple carto maps. Beyond that work will then be focused on adding carto's special sauce features like variables and mixins.
The current implementation allows for visualization of the AST in a variety of formats (depending on the input filetype) to aid in debugging. Particularly, translation of the AST into the dot format allows the use of graphviz to create visual tree diagrams of a carto style.
Windows build system: halfway status
Jul 17, 2011 | Roel Vanhout
Time files and we're already halfway through 2011's GSoC. There were quite a lotof reactions to the initial announcement of my project and to my previous postabout it, from people who were all excited to see Mapnik become easier to buildand use on Windows. It was very encouraging and my apologies for not gettingback to everybody yet; I thought it would be more be productive to sollicitfeedback on something working.
The implementation of everything that was planned was quite vague when theproject began at the end of May, but I'm really excited about how things areturning out. While I didn't quite get as far as I had liked, the genericness ofwhat I'm building to support Visual Studio for Mapnik is imo very cool and Ihope that other projects besides Mapnik can also take advantage of it. Of courseI'm focusing on the needs of the Mapnik project for now, and in this post I'dlike to explain how I see it work for future users trying to build Mapnik withVisual Studio, how it works under the hood, and what that means for the future.
How the new windows build system should work
I used my own experiences building not only Mapnik but quite a bit of other opensource products that are primarily developed on Linux to lay out a list ofrequirements that a system for supporting Visual Studio should fulfill. Orderedby importance, those were:
- 'one-click' deployment for the user. No long lists of steps to follow, or settings to change etc.
- Only rudimentary Visual Studio experience required. It can be quite
- Easy to use by the developers. For every action the library developers need to take to support another environment as the one that is mainly used for development, the chances that it will actually be maintained and work well go down. So ideally, support for Visual Studio should be transparant (require no extra work).
- No extra dependencies or additional software to install. Everything should work with the tools that come with a standard Windows and Visual Studio installation; that means no installing Perl or Python, Cygwin, other build tools or utilities.
- Transparency wrt the library dependecies - change as little as possible, and preferbly nothing, to any code to be sure that everything works as intended and tested by all respective developes. Unfortunately, in some cases where certain code isn't well-tested to build or function using Visual Studio there is no option but to make changes.
- Not keeping a copy of library dependencies in the Mapnik source tree. With copies of code it's error-prone and laborous to keep up to date with new releases and security fixes; it's better to always use the canonical source.
With these in mind, I have the following workflow in mind for anyone wanting tobuild Mapnik on windows:
- Download and extract Mapnik release zip file from Mapnik website.
- Download and extract all library dependencies automatically by running a batch file. This makes it 100% clear to the user that the code used is the original release as intended by the library developers, and which version of the code is used.
- Configure and where needed patch the library code. By 'configure' I mean copying configuration files like the ubiquitous 'config.h' for which many libraries provide a 'config.h.vc' or similar skeleton; this mechanism isn't standardized though so to do these things manually, users would have to follow specific procedures that are slightly (or very) different for each library. By putting all these command in a simple batch file, it can all be automated but still easy to trace what is being done. By 'patching' I mean where needed make changes to source code get it to compile with Visual Studio. As mentioned before, unfortunately there are cases where there is no other option.
- Open the Mapnik solution and click 'build', or alternatively build everything from the command line, again with a transparent batch file.
For the user that isn't interested in the behind-the-scenes, these steps canthemselves be put into a batch file so that after downloading and unzipping theMapnik release zip file all further steps are run automatically while the usergets coffee or browse's reddit.com/r/funny.
What this solution is not
Now, the naive way to go about this is write a bunch of batch files, prepare theVisual Studio solutions/project files manually and put them in the MapnikSubversion to be included in each release. This has a number of obviousshortcomings:
- Requires developers to update project files manually, using Visual Studio, when new files are added to Mapnik.
- Requires manual tracking of batch file contents, downloads, new releases of libraries etc.
- Cannot be re-used - all one-off, only for Mapnik project.
Python to the rescue
So clearly this is not a viable strategy. Instead I wrote a Python program that,given a description of the source files that make up a program or library andsome settings like precompiler flags, will generate Visual Studio project filesand solutions, complete with the dependencies and all the rest required to buildthe program. The program, dubbed 'vs4os' for 'Visual Studio For Open Source',also generates the batch files mentioned above and WiX files, which are inputfiles for the open source WiX installer builder - a system to create MSIinstallers from an XML input description. Right now only Visual Studio 2008files are generated, but this abstraction allows easy generation of variousversions of files, too.
How VS2OS will be used
How do I see this being used in practice, then? The vs4os program is run at themoment the Mapnik (or any other program or library that uses vs4os) release ismake; for example as part of the 'make release' make rule. The project files andgenerated batch files are then distributed with the release. This way theend-user doesn't need to install or download anything besides the zip file. Ofcourse, developers could also choose to keep track of the generated files in thesource tree of a project; every time files are added to the project, the fileswould need to be re-generated, but that could easily be done as part of a cronjob or post-commit hook.
At the moment, the list of files that need to be in the project files need to bespecified manually. That means that the goal stated above about the system beingtransparent to the developers isn't fulfilled 100% yet. A possible extension tothe vs4os operations is that it would read the list of files from the main buildsystem used, for example the autotools chain or Scons. Often somewhere in such abuild system, there is a list somewhere of what files are included; by havingthe program read directly from there, there would be one canonical source offiles to build and nobody would have to even know that there is a parallel buildsystem being generated from the primary sources.
So, what is the working status of all this? As much as I would have liked tohave a complete Mapnik build system to show along with this post, there arestill a few project that I need to further describe in the vs4os input languageto get everything working from start to finish as described above. At the momentthere are about 20 libraries that are used when building Mapnik (directly orindirectly), and each of them has ideosyncracies in their build system that Ineed to delve into. Some, like ICU and Boost, have such complex system but alsofirst-class support for building with Visual Studio that I've decided not tore-invent the wheel there and use those as-is.
You can track the current stateof affairs in my branch in Mapnik SVN at svn.mapnik.org/branches/gsoc2011/roel;this branch does not contain the generated project files yet, so you need tohave Python installed and run windows\\vs4os_files\\build_all.bat to try it out.Once I have my first full working set of files done, I will put them upsomewhere and I hope that there are people who are willing to give buildingMapnik with Visual Studio a shot and send me their feedback.
I'm afraid this post has gotten way too long already, so I'll cut it short here.Of course I'm very interested in hearing from everybody who has contacted me orthe list with Visual Studio questions hwo you think about this all - will itserve your needs? Do you have any special requirements in your build environmentthat need to customized in a specific way?
As I mentioned in the beginning, I'm really excited about how this is turningout, and I hope that it will prove useful in the future both for the Mapnikproject and beyond.
SOTM EU 2011
Jul 15, 2011 | Dane Springmeyer
New text placement system
Jul 13, 2011 | Herman Kraus
The first part of my Google Summer of Code project is completed now.
As a result one can choose arbitrary alternative placements for TextSymbolizers if the default placement fails. However this is no longer limited to placements, but one can also change text, font size, color, etc. Everything is fully configurable now.
When two labels are too close to each other normally one label is placed and the other one is simply ignored. This can lead to undesirable results. Look at the following sample image:
With the new placement system one can tell Mapnik to try different placement options. In this example I defined the following parameters:
- First try to place the label below the number with font size 16 (color: blue)
- Then try to place it above with font size 10 (color: red)
- Last try to use a shortened label text (color: green)
The syntax to configure this is pretty easy:
<TextSymbolizer name="'Long'+[nr]" face-name="DejaVu Sans Book" size="16" placement="point" dy="8" fill="blue" />
<TextSymbolizer name="'Long'+[nr]" face-name="DejaVu Sans Book" size="16" placement="point" dy="8" fill="blue" placement-type="list"> <Placement size="10" dy="-8" fill="red"/> <Placement name="'S'+[nr]" fill="green"/></TextSymbolizer>
One can add as many placement options as one wants. Each attribute has the same name as in TextSymbolizer (in fact they share the parser). Each placement inherits all attributes from the previous one. Therefore it is not required to add 'size="10"' in the second Placement tag.
The code is not already included in trunk, but is available in the branch svn.mapnik.org/branches/textplacement.
In the second half of summer of code I will add text formating capabilities to mapnik as described in an older post.
Introduction to the 'Windows build system' GSoC 2011 project
Jun 09, 2011 | Roel Vanhout
Hello all! With Google Summer of Code 2011 already in its third week, I'd like to briefly introduce what I'll be working on the coming months. My project is named rather broadly 'Improve Mapnik Windows build system'. Building Mapnik on Windows is quite involved, especially (but not exclusively) when using Visual Studio. Making this a lot easier is the main focus of my project. I am exploring ways to make Windows support as painless as possible both for Mapnik developers and users who want to run Mapnik on Windows, or use it in their (C++) applications.
Although Mapnik itself isn't hard to build, the long list of libraries that are used makes getting a working Mapnik binary on Windows non-trivial. To address this, I'm building a system that will allow us to generate Visual Studio project files for all the libraries that are used by Mapnik and for various versions of Visual Studio. This system consists of a tool that takes a specification of the characteristics of the build steps of a library and generates .vcproj files out of it. It also generates solution files with dependencies between the projects and will let us ship Mapnik with a complete working set of Visual Studio build files so that writing an application that uses Mapnik for its map rendering will be as simple as downloading the Mapnik source, downloading and unzipping the dependent library sources into the right directoy and hit 'Build' in the VS IDE. It will let developers choose whether to use static or dynamic libraries and provides hooks for customisation, in situations where needed.
Over the last couple of months since first posting rough build instructions for Visual Studio on the Mapnik trac wiki, I've received a number of emails from people trying to get it to work and with problems they encountered. For one this shows that there is an interest in using Mapnik on Windows and from Visual Studio, and secondly it helps me to see what kind of problems developers run into. So if you are a developer using or wanting to use Mapnik on Windows or with Visual Studio, don't hesitate to contact me with your experiences - it's very helpful! If possible /cc the mapnik-developers list so others can learn what you are working on.
Apart from this, there are some other points planned for improving the build system and Windows support for Mapnik. First there is checking the build of Mapnik 2 on Windows, so that it will work well when it's released. Then there is setting up an automated build environment so that we can be alerted sooner rather than later when some change brakes something in the build on one of the supported platforms.
Another thing that will help Windows developers is a way to use Mapnik from .Net languages. Although a full .Net wrapper is too much work besides all the other issues, hopefully I can make a meaningful start and open the door for .Net developers to leverage Mapnik in their applications.
As you can see, lots of plans. And again, if you have an interest in any of these topics, please let me or the mailing list know. Feedback from users is crucial to measure if I'm going in the right direction.
Improving Text Rendering
May 28, 2011 | Hermann Kraus
My Summer of Code project this year is about improving Mapnik's text rendering. There are two problems with the way text is currently rendered. I'll describe these problems and show how I intend to solve them.
When rendering crowded areas there is often no space to place a label at the point it should go to and the label therefore is dropped. View Larger Map
In the example above many symbols are missing a label because there was no space, but they could have been shown when moved a bit. I already worked on this problem this winter and now you can tell Mapnik 2 to try different locations and font sizes. But the algorithm is quite limited at the moment and many important properties can't be changed. So the first part of my work is to add these missing features. The most important change will be that one is able to change the text. So if rendering "Example Street" fails, it could try "Example St.".
The other big problem is that Mapnik doesn't have any means to change formatting in a TextSymbolizer. When you try to label a mountain peak with name and elevation like this Name
you need two symbolizers, one for the name and one for the elevation and calculate a appropriate offset for the second one. But if the name is a bit longer and mapnik splits it into multiple lines this calculation is wrong, the texts overlap and mapnik drops one.
My project is to add formating capabilities to TextSymbolizers. When I'm done one will only need one symbolizer for this job and the positions will adjust automatically.
Realtime, dynamic rendering by Vizzuality
May 24, 2011 | Dane Springmeyer
Check out some amazing recent work by the team at Vizzuality, leveraging Mapnik and NodeJS to map the 2011 Spanish Elections in realtime.
Mapnik, GSoC, and Stylesheets
May 24, 2011 | Colin Rundel
Since yesterday was the official start date of the Google Summer of Code 2011, Dane asked me to post a little about my project and what I hope to accomplish over the next several months.
The first stage of this project, and what I have started work on, is the implementation of a parser for Carto which takes a Carto stylesheet and generates an abstract syntax tree from it. This is being done using Boost Spirit which is a beautiful set of C++ libraries for parsing and output generation of domain specific embedded languages. This initial work will not be immediately useful for mapping as it is still necessary to translate the AST to Mapnik's internal map representation but it is an important first step in the parsing processes. You can follow progress on this work on my github page and my GSoC branch on the Mapnik SVN.
The github page also contains some initial work on a Carto generator which reads in an XML style file and translates into a Carto stylesheet. At this point the output is (nearly) valid Carto syntax and while it does not use many of the more advanced features of Carto (nested styles, mixins, functions, etc.) it should give a good sense of what the Carto equivalent of a XML style file should look like. This software depends on Mapnik2 with changes that are currently only present in my GSoC branch and Boost 1.47 (svn trunk) if you are interested in trying it out.
Rendering interactivity via custom JSON tiles
May 23, 2011 | Dane Springmeyer
A new output renderer has just landed in mapnik trunk, called the grid_renderer.
This has been a very interesting and fun project to work on. I encourage you to check it out! It is powering the hover-able features in the latest TileMill 0.2.0 release and more details can be found on the trac wiki.
Three students accepted to GSOC 2011 under Mapnik Project
Apr 25, 2011 | Dane Springmeyer
We just received exciting news from Google that 3 Google Summer of Code student projects were accepted this year for working on Mapnik.
We received more than triple the amount of applications than we had slots for, so the students accepted are an amazing bunch.
Here is a run down of the projects:
Colin Rundel plans to implement better support for CSS inside Mapnik core. This is a particularly exciting project because it will undoubtably inspire new stylesheet and rendering design ideas. Colin is off to a fast start working on a Carto parser in C++ using the extremely fast boost spirit library. Rob Coup will be the lead mentor on this project with active involvement from the authors of Cascadenik and Carto as well as the Mapnik lead developers Artem and Dane.
Hermann Kraus returns this year (last year he created the amazing Mapnik MetaWriters) to work on improving Mapnik's support for advanced label placement and formatting. Dane will be mentoring this project and involving well know Mapnik cartographers for advice and inspiration (you know who you are! :) ).
Roel Vanhout (famous for starting work on PHP bindings for Mapnik) is going to focus on improving the Mapnik build system for Windows. Roel brings a great depth of knowledge in C++ and software development so this project will offer Roel the time and focus to touch the entirety of the Mapnik codebase. Milestones include patching Mapnik2 to build with Visual Studio, making sure that building the PHP and NodeJS bindings work well against mapnik core, developing some sample GUI applications using Mapnik rendering targeting the windows platform, and setting up a buildbot that will host automatic builds for not only windows but also Linux and Mac OSX. This project will be amazing way to bring Mapnik rendering to much wider audience.
A simplest Mapnik plugin
Oct 26, 2010 | Dane Springmeyer
I’ve written a starter “hello world” datasource plugin (aka
input) for Mapnik.
GSOC 2010 - An excellent first year
Oct 22, 2010 | Dane Springmeyer
GSOC 2010 was an awesome first year of participation for the Mapnik project. Mike Migurski and Tom Carden came up with some fantastic ideas. Artem and I mentored. We greatly enjoyed working with Carlos and Herm.
Our near-weekly skype meetings discussing Mapnik development was one of the highlights in addition to the fine code that got written. And Rob Coup, who helped as Mapnik Admin for GSOC, attended the GSOC summit with me in October, which was a blast. The SF trip afforded us a chance to swing by the infamous Stamen offices and hang out with Aaron Straup Cope and learn the exciting details of the emerging DotSpotting.
A coup and a cope!
Back to the code: Herm's work on MetaWriters came together nicely and saw immediate update in production sites like http://pakistansurvey.org/. Herm also has a nice demo here that shows the amazing fine tuning of json hit representations of everything from icons to labels to lines.
Carlos, after wrapping up his work on scale factors, moved on to the massive undertaking of starting a whole new svg renderer in Mapnik. While he never intended to finish this work, his prototype provides a good template for a renderer which could, some day, provide better svg output than Cairo.
Thanks to everyone involved!
MCS01 Roundup - What got done
Sep 30, 2010 | Dane Springmeyer
If you are interested in all the various things that Mapnik community members worked on during last week's sprint, then check out the wiki page summarizing blog posts and other items at the MCS01 Results page.
And keep an eye out on the mapnik-devel list over the next several weeks as additional things participants worked on come to light. Some projects started at the sprint are so cool they will take some time to mature. For example, Frederik Ramm started working on a new rendering backend to Mapnik that will output not maps, but rather statistics about how they were created. This will be invaluable for people running servers on Mapnik that want clues on how to improve the performance of their stylesheets. But writing a new renderer is a big task, even for someone as prolific and talented as Frederik, so stay tuned and I'm sure he'll report on his work soon.
MCS01 Roundup - Community
Sep 29, 2010 | Dane Springmeyer
My personal highlight of the Mapnik sprint last weekend was the sense of community. After working on the Mapnik project and codebase for several years, having the chance to meet Artem and the other brilliant people using Mapnik was a phenomenal thing.
Richard Weait planned the event but could not make it in person, but here we are at a pizza joint local Andy Allan picked out. We are raising a glass to Richard, "We-EAT!"
Iván Sánchez arrived the second day of the sprint to work on Spreadnik and brought a ton of joy and laughter. I think I captured the only moment during the whole sprint he was not smiling!
Two of the world's best cartographers in my book, Steve Chilton and AJ Ashton at Mad Hatters kicking back.
Artem and Dane - united at last!
Andy Allan seeing the impossible unfold as Tom MacWright demos the lastest TileMill map interaction tools behind afghanistanelectiondata.org
MCS01 Roundup - Faster Mapnik
Sep 29, 2010 | Dane Springmeyer
The first international Mapnik code sprint wrapped up in London and San Francisco over the weekend. It was an amazing event, with new friendships made, new features discussed, and old bugs squashed.
I'm going to be reporting on various highlights as time permits and as I gather my thoughts. This first post details some performance improvements made to Mapnik on the first day of the sprint.
Following the Mapnik project's first year of participation in the FOSS4G WMS Shootout, we learned that Mapnik is surprisingly fast, given that we've not yet done a lot of profiling and most focus of late has been on advanced cartography. We also learned that the new multi-threaded C++ Paleoserver Dane wrote for the shootout scales linearly.
Room for improvement
But there was one benchmark that Mapnik did very poorly in: on-the-fly reprojection of shapefiles. Basically the test requires requests in Google Mercator and data to be pulled in EPSG:4326. This causes Mapnik, for each and every vertex of every geometry, to call out to proj.4 for transformation from source to destination srs. And because Proj.4 is not threadsafe in Mapnik this requires a threadlock for every single call to Proj.4. Because the Paleoserver model is one process, many threads, this kind of locking has a much more adverse impact than for multiprocess servers.
But, we knew that the latest trunk of Proj.4 has some new threadsafe support. Tom Hughes took a closer look at this on the first afternoon of the sprint, and based on the new support for 'projCtx' he enhanced Mapnik to avoid unecessary thread locking when built against Proj.4 version 4.8 (current trunk). The result is just what the team was hoping for and nothing short of awesome.
The above graph is a result of re-running the latest Mapnik (with the fix from #605) on the official FOSS4G WMS benchmarking server. The blue line is MapServer's original result, and the chartreuse line is Mapnik's, while the green line shows how much faster Mapnik is after Tom's fix (both runs using Paleoserver). The green line also shows the Paleoserver throughput at 128 concurrent clients (higher load) which the original tests stopped short of (I plan to do more tests with even greater load to see if or where the Paleoserver stops being able to scale linearly).
MCS01 Day 1 Dispatch
Sep 24, 2010 | Dane Springmeyer
Today marks Day 1 of the first ever international Mapnik code sprint. It is a coming together of some of the top developers working on Mapnik and the lead Mapnik cartographers making beautiful maps and tiles.
We have attendees from the UK, Spain, Germany, France, US that have arrived. FIrst off this morning we get to hear from Steve Chilton who will present his SOTM slides on "What I'd like to do with Mapnik".
The London location is the offices of Cloudmade, which kindly offered us space on Friday and over the weekend. Thanks Cloudmade!
Starting the sprint with a walk
Sep 23, 2010 | Dane Springmeyer
It's an exciting week for the Mapnik community, as the first international meetup and code sprint is kicking off on Friday in London, with remote participants from San Francisco and New Zealand.
I've arrived to the UK early to meet up with Artem in the tranquil town of Charlbury where Mapnik consulting is based. After several years of working closely together on Mapnik development we had a lot to talk about in person, so Artem proposed we take the train a few stops down to Oxford and explore the city on foot.
We had a lovely day walking in the sun, through the university, stopping at markets, pubs, and museums while chatting about how we ended up sharing so much in common and what keeps us going, in code and life.
We're both thrilled about all of the community that is coming together on IRC and in London and San Francisco to think about fun things they'd like to do with Mapnik. See you all soon!
Code Sprint prep - ready your compiles
Sep 20, 2010 | Dane Springmeyer
In the upcoming sprint success will largely be felt in the richness of conversations and smart brainstorming - as it is the first time many Mapnik developers have met each other (or at least the ones at -8 UTC like me).
But, we're certainly planning on getting some code written, and the less time we spend sword fighting (perhaps =) ) the better. So, if you are attending the sprint, or participating from afar, make sure you are running Mapnik2 and make sure you've taken the time to make sure your compiles are as fast as possible.
Development Seed Leverages Mapnik for AfghanistanElectionData.org
Sep 19, 2010 | Dane Springmeyer
Development Seed is leveraging Mapnik and Cascadenik for gorgeous base tiles and powerful thematic visualizations at AfghanistanElectionData.org, launched yesterday for the election in Afganistan.
Check out the details on their latest work via Eric's post and also a nice post at techpresident.com.
AJ and Tom, the cartographer and programmer duo behind these awesome maps are going to be attending the upcoming Mapnik Code Sprint, dubbed "Cartographers and Committers". The idea is to bring together Mapnik core developers with leading cartographers to think through future designs and advanced cartography.
Looking forward to next week!
FOSS4G WMS benchmark 2010
Sep 10, 2010 | Artem Pavlenko
Countdown to Mapnik Code Sprint
Sep 03, 2010 | Richard Weait
The first Mapnik Code Sprint: Committers and Cartographers, is only three weeks away and we couldn't be more excited. We have a great group lined up but we could still use some help from, well, from you.
A code sprint, or hack fest, is a period of software development focused on a given list of goals.
Committers and Cartographers is a free and open three-day event for the improvement of the Mapnik code base. The face to face meeting will let us approach complex topics with immediate feedback. We'll see lots of bug-fixes and some new features tagged as #msc1 after the event is over.
We'll be adding advanced cartography features and removing bugs from Mapnik, as well as planning for future Mapnik improvements in performance, stability, features and documentation.
The Mapnik Code Sprint will be held, in person, in London and San Francisco, from Friday, 24 September to Sunday, 26 September 2010, as well as online for contributors around the world. You can participate by reserving one of the limited seats we have available in either London or San Francisco by emailing mapnik-msc1 < domain > weait < punctuation > com. You can participate online in several ways.
Participate in the Mapnik Code SprintBefore the event
During the event
- File your bugs on trac
- Help prioritize bugs and feature requests on the wiki
- Reserve a spot and join us
- Join us via IRC (#mapnik on irc.freenode.net) and help squash bugs
Find more details and share your thoughts on the mailing list or the wiki.
Photo creditSprinter photo
© Sebastian Mary
is licensed CC-By-SA
Aug 31, 2010 | Dane Springmeyer
I'm going to be at FOSS4G 2010 next week in Barcelona. The last time I was in Spain was the final day of SOTM and the day Spain won the world cup. I'm excited to return!
On tap will be a great workshop run by Iván Sánchez Ortega on using Mapnik to render OSM data: W-03: Setting up an OpenStreetMap rendering toolchain
Mapnik is also participating in the FOSS4G WMS Shootout this year, a friendly competition of many of the leading open source and non-open source servers out there. Before this month Mapnik didn't really a fast C-based WMS server, but I wrote one, and so did Frederik. I'll be reporting soon on some of the speed improvements and other lessons learned during this excellent and fun exercise. Huge thanks to Matt Kenny for designing the styles for the shootout which were required to match all other servers.
Hope to see you at FOSS4G!
Scalefactors and Metawriters
Jul 06, 2010 | Dane Springmeyer
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.
State of the Map 2010
Jul 03, 2010 | Dane Springmeyer
The OSM annual event is in Girona, Spain this year and it will surely be a great time to catch up with members of the Mapnik community.
I will be attending as I'm helping present on the work that H.O.T. has been doing in Haiti. H.O.T. has a presentation lead by Nicolas Chavent on Sunday called "Grounding the OSM Project: The Humanitarian OSM Team in Haiti".
At least two talks are focused specifically on cool Mapnik rendering topics:
And there is also a BOF session on Mapnik (in addition to OpenAerialMap) tentatively on friday morning, which will be a great chance to push forward ideas on the future features of Mapnik discussion from WhereCamp SF
Did I miss anything?
Hope to see you there!
OS VectorMap District - Mapnik
Apr 30, 2010 | Artem Pavlenko
Rose & Crown - the movie
Apr 08, 2010 | Artem Pavlenko
Mapnik session at WhereCamp 2010
Apr 05, 2010 | Dane Springmeyer
Great session on Mapnik at WhereCamp 2010 hosted by Google in Mountain View, California.
A group of Mapnik users met for a hour to discuss and brainstorm around potential future features of Mapnik. These include both external tools that we should collaborate on designing (that don't belong in Mapnik Core) and potential advancements that could be added to Mapnik core to make life making beautiful maps better.
OS OpenData - Meridian2
Apr 01, 2010 | Artem Pavlenko
Mar 23, 2010 | Artem Pavlenko
The Mapnik team is proud to announce release 0.7.1!
This is mainly a bugfix release, but it also includes some new PNG output features.
Thanks to all contributors!
This is a recommended upgrade for all Mapnik users.
Google Summer of Code 2010
Mar 22, 2010 | Artem Pavlenko
I'm very pleased to announce that Mapnik has been accepted as part of Google Summer of Code™ 2010. Congratulations to Dane Springmeyer for his excellent work to make this happen!
We are now looking for students and mentors to take part in the program. We're sure there are lots of talented people out there so, please, get in touch. Right now we're discussing ideas and preparing for coding on mailings lists and #mapnik. There are both exciting and challenging opportunities to work on Mapnik over this summer and I hope to see you there! Let's have some fun!
You can read about the program and FAQ on Google Summer of Code 2010 site
Mar 09, 2010 | Artem Pavlenko
Jan 19, 2010 | Artem Pavlenko
The Mapnik team is pleased to announce release0.7.0! There are many exciting new features, improvements, fixes etc. For the complete list see:
Thanks to all contributors! And thanks, yet again, to Dane Springmeyer for managing thisrelease.
This is a recommended upgrade for all Mapnik users.
NOTE: New for 2010! Windows binaries now include support for both Python 2.5 and 2.6.
Happy New Year!
Jan 04, 2010 | Artem Pavlenko
New Mapnik OS X Framework Installers
Dec 16, 2009 | Dane Springmeyer
Dec 16, 2009 | Artem Pavlenko
Regular expressions are very useful when working with text.
Dec 08, 2009 | Artem Pavlenko
Recently I had chance to work on new features for Mapnik, thanks to sponsorship from Richard Weait. I'm so excited about these new features, I even named the new branch mapnik2.
Jul 14, 2009 | Artem Pavlenko
Mapnik team is delighted to announce 0.6.1 release of Mapnik.Big kudos to everyone for their great work. I hope you're all havingfun, I certainly am :). There are lots of bug fixes along with newfeatures. More details can be found here:
BTW, SOTM 2009 was awesome. Lots of interesting maps, most of them rendered with Mapnik. My favourite is:
State of the Map 2009
Jul 08, 2009 | Artem Pavlenko
Apr 01, 2009 | Artem Pavlenko
The Mapnik team is pleased to announce our 0.6.0 release.
This release has tons of new features, improved stability and better usability.
It has been made possible by contributions from our growing Mapnik community! Special thanks toDane Springmeyer for all his efforts along the way.To see release highlights and a full list of new features:
Thanks to everyone involved for their great work!
Apr 15, 2008 | Artem Pavlenko
Hello all,I'm pleased to announce 0.5.1 release.
This is a minor bugfix release; it is a recommended upgrade for users of 0.5.0.This release includes the following changes:
- builds with GCC 4.3
- re-enables regex support, which was inadvertently disabled in 0.5.0
- add better error handling to shapeindex
- support ppc64 builds
- fix division by zero error in placement_finder.cpp with multiple loops
Big thanks to Dominic Hargreaves for making it happen!
Mar 11, 2008 | Artem Pavlenko
I would like to introduce Mapnik Consulting. I have been consulting for a few years now, but I think the time has come to move things up a gear. Have a look, it even has 'rounded' corners:).
Custom maps with Mapnik (part 2)
Feb 22, 2008 | Artem Pavlenko
The people behind OSM Cycle Map have recently added contours. Combining contours with street level data is no trivial task, but Andy and Dave yet again have come up with an attractive solution. If you're a cyclist you know how important it is to see if you're going to be heading up or downhill!
There are some very nice examples on their site, do check them out.
I was looking for places I cycled in the past and here is my favourite for today:
It hasn't been mapped by OSM yet, but there is a lovely cycle route you might try. Starting from the mainland (Glenelg), cross by the small car ferry to Skye. Head straight up the valley in front of you - where you might feel those contours in your legs - and on over the hills till you hit the A87. There are great views on the way (weather permitting). Turn right and back to the mainland (Kyle of Lochalsh) over the (ex)Toll bridge.
Mapnik goes Unicode (properly)
Feb 20, 2008 | Artem Pavlenko
Well, we had "Unicode" for a while in Mapnik - first it was ad-hoc utf8 and latin1 to UCS-2/4 transcoders, then iconv and fribidi. It kind of worked (sometimes) but it wasn't a proper solution. There were a few problems with the previous approaches - std::wstring is not portable, fribidi was choking in multi-threaded rendering and had to be disabled.
Result? It was constantly brought to my attention by Morocco in OSM and others.Arabic is a "right-to-left" language for starters and it also requires "shaping" (this is when characters change depending on where they are in the text to form smooth connections between letters).
So here is the solution - ICU. I hope it will be final :).
Custom maps with Mapnik
Feb 19, 2008 | Artem Pavlenko
For those of you who don't follow Django - there is a great new project out there - EveryBlock. Adrian Holovaty and the team have been busy putting local information on the web, giving people chance to check everything from restaurants violating the NY trans fats ban to lost property. It is very nicely put together and it's Django of course.
There is an interview with Adrian where he talks, amongst other things, about the technology behind the scenes, which includes Mapnik. Also, the developer in charge of maps Paul Smith describes the reasoning behind their decision not to go with the usual suspects - Google, Yahoo!, or Microsoft.
It is really great to see Mapnik being used to create highly customized, beautiful cartography!
Mapnik 0.5.0 Debian packages
Feb 16, 2008 | Artem Pavlenko
"..Just wanted to let people know that packages of Mapnik 0.5.0 should havehit the mirrors by now, in unstable, for the use of anyone using thisfine distribution."
Great work! Thanks Dominic
UPDATE : mapnik (0.5.0-1)
Feb 07, 2008 | Artem Pavlenko
I'm very pleased to announce Mapnik 0.5.0. It has been a long time in development, but I hope it was worth waiting for. This release brings numerous stability and performance improvements. I am particularly excited to see Mapnik performing well in multi-threaded setups, offering scalability.
During 2007, Mapnik has been deployed in a number of diverse environments, rendering maps 24/7.Here are some people who use Mapnik :
List of some new/improved features:
- support for native builds on Mac OS X (both Tiger and Leopard)
- support for single/multi-threading variants
- gdal raster support
- more comprehensive text label placement functionality (min_distance, spacing)
- viewer - qt4 based application
- character encoding support (iconv)
- changed internal geometry representation to explicitly support multi-geometries
- placement_finder is re-factored
- optional libxml2 based map loader (internal and external entities)
- image quantization
- support for image 'views'
- improved 'memory file' based i/o in shape input plug-in
- support for 'numeric' type in postgis input plug-in
- saving images directly into Python string
- win32 binaries built with VC++ express
***This is a major feature enhancement as well as a bugfix release and everyone is encouraged to upgrade***
Thanks to everyone involved, I really appreciate your help. And let's make Mapnik even better this year!
Latest win32 binaries (r638)
Feb 05, 2008 | Artem Pavlenko
Here are the latest win32 binaries (r638) including bindings for Python 2.5. They will be in the 0.5.0 release, which is imminent. So, give it a try and report any problems.Have fun!
Managing large XML files
Jan 02, 2008 | Artem Pavlenko
As a new Mapnik release 0.5.0 is not far away, it is a good time to present some very nifty new features. There are quite a few of them and each one deserves a news item, but today I'd like to introduce Managing large XML files in Mapnik - a long-awaited feature which brings sanity (parameterization,re-usability,readability) into the domain of managing complex maps aka OSM. While I mention OSM as an example, the same techniques can be applied to any map.
Last year, shortly after Mapnik was deployed to render tiles for OpenStreetMap and users started adding new styles to the osm.xml file, it become apparent that editing map definition is not a trivial task. I saw this problem coming but at the time I didn't have a good solution. I just blamed XML for being designed for machines and not humans, which is true of course, but...Well, it turned out that some lesser known (advanced) XML features can be used to greatly improve the situation. Thanks to David Siegel, for implementing support for libxml2 parser in Mapnik and also for writing HOWTO which is a great starting point.
P.S. I just modified my local osm.xml to use external entities for things like database connection parameters and I really like it!
Happy New Year!
Sep 10, 2007 | Artem Pavlenko
Society of Cartographers - 43rd Annual Summer School
Sep 04, 2007 | Artem Pavlenko
State of the Map
Jun 21, 2007 | Artem Pavlenko
Join me in Manchester, UK on 14-15 of July for the State of the Map. I'll be talking about Mapnik, Openstreetmap and more. It is promising to be the conference of the year and if you're not signed yet, hurry up!
Mapnik win32 binaries
Apr 27, 2007 | Artem Pavlenko
Yesterday, I built and packaged win32 binaries for Mapnik. All libraries including dependencies are built with VC++ Express on Vista.
There is no installer (yet) so you have to setup %PATH% etc yourself. In 'bin' directory (e.g c:\\\\mapnik\\\\bin ) there is a small demo application 'rundemo.exe' which produces two map images from demo data. You can run it like this:
Everyone (with Windows box) is encouraged to give it a try and report any problems, gotchas ... If everything is OK then win32 binaries will be available as a part of Mapnik release, starting from 0.4.1.
Mar 12, 2007 | Artem Pavlenko
New Release 0.4.0
Feb 26, 2007 | Artem Pavlenko
Mapnik 0.4.0 is out!
This is a major feature enhancement as well as a bug fix release.The new features include :
- Projection transformations
- Multiple named styles in WMS
- 'Line following' text labels
- 'Shield' symbolizer
- Feature querying
- Character encodings support
- GetFeatureInfo with text/plain and text/xml output
- Support for right to left languages
Thank you to:Jean-Francois Doyon, Vince Spader, Vincent Schut, Toby Collet, David Leaver,Ehud Shabtai, Christopher Schmidt, Jon Burgess, John Hague and everybody else involved for helping to make Mapnik a great project!
Also big thanks to GeospatialVision for supporting mapnik development and 10East.com for sponsoring hosting.
Oct 30, 2006 | Artem Pavlenko
Well overdue, but here is some exciting news. Aaron Mitti and Vincent Spader have joined the Mapnik development team and done a brilliant job improving text rendering. As a result we now have 'follow line' text placement and 'ShieldSymbolizer - combined label/text - very useful for things like motorways. A big thank-you to Aaron and Vince!
I've created a couple of 'Google Maps' demos to demonstrate these and other new features:
The first uses datasets from GeoGratis (Canada)
and the second is based on the entirely free OpenStreetMap
. Great project! I might get myself a GPS and join in.
Tiles for both demos are rendered with simple Python script using Mapnik's bindings and added as a custom layer to the by now familiar GMap2 interface.
Recently I've been able to focus again on Mapnik, and there should more news very soon. Stay tuned!
New Release 0.3.0
May 22, 2006 | Artem Pavlenko
- License changed from GPL to LGPL
- Python-based WMS server (WMS 1.1.1 and 1.3.0)
- New Renderer interface
- New Feature model
- Font engine and text symbolization.
- Python and C++ demos
- win32 support - yes, mapnik can be compiled (tested with vc-8_0) and happily runson windows now (In the future win32 binaries and/or build instructions will be provided)
- x86_64 support
- Lots of bug fixes
Apr 18, 2006 | Jean-François Doyon
A Python-based WMS server has been added to Mapnik!
- Supports versions 1.1.1 and 1.3.0 of the OGC WMS Specification
- Supports GIF/JPEG/PNG output
- Supports XML/INIMAGE/BLANK error handling
- CGI and FastCGI interfaces for easy integration into your current web server
For now, you need to check the code out from Subversion. See the file docs/ogcserver/readme.txt for details on installation.
Mar 02, 2006 | Artem Pavlenko
Feb 07, 2006 | Artem Pavlenko
Jean-Francois Doyon has developed *new* building scripts for mapnik. Very cool! We're planning to add support for more platforms and toolkits.
I re-worked mapnik's feature processing pipeline and as a result we can have multiple back-ends. At the moment only the AGG renderer is implemented but writing a new one should be very straightforward. For those interested in implementation details have a look at feature_style_processor
Feb 01, 2006 | Artem Pavlenko
I'm very pleased to announce mapnik's new release. We've been working hard to get here. The main focus of this release is to provide a better user experience while installing mapnik, which hopefully will bring more people on board. I know, there is room for further improvements but this is a step in the right direction. This release offers:
- new build system
- new INSTALLATION INSTRUCTIONS
- new symbolizers (polygon/line patterns)
- lots of fixes.
Big thanks go to Jean-François Doyon, who in his spare time, refactored mapnik's source tree and wrote a better build system using SCons.
Feb 01, 2006 | Artem Pavlenko
Well, here it is. Finally we've got the new site running! It is hosted by Zettai and it is Django.
While BerliOS provides an excellent service, I always had reservations about the Mambo/PHP based site. There are a couple of reasons for that:
- one of mapnik's goals is to provide bindings for 'cool' high-level languages and Python fits this bill nicely
- let's spit it out: PHP sucks! (IMHO).
I hope you'll enjoy the new site and feel free to send your comments/suggestions.
Jan 29, 2006 | Artem Pavlenko
Jan 02, 2006 | Artem Pavlenko
Mapnik is a toolkit for developing GIS applications. At the core isa C++ shared library providing algorithms/patterns for spatial dataaccess and visualization. A key project goal is to provide the bestpossible high-quality cartographic output whithout compromising performance. Mapnik is fast and easy to integrate with other frameworks. If you like coding in Python,there are boost.python bindings and you can start developingweb-mapping applications with your favourite framework right away (justconsider using django :).
This release adds serialization support for map definition objects(Text,XML,binary), alpha blending for symbols, some performance andportability improvements. Several bugs/features were corrected,including the bug in the shape datasource that prevented attributesbeing read for point/pointz/pointm geometries.
As always, there are lots of things in the pipeline. Mapnik is almostready to run on win32 and mac. In the next few days I'll be addingsupport for pattern lines, fills, gradients etc. I've also started longoverdue work on text rendering. Stay tuned!
The screenshots below show a simple Qt4application which will eventually make its way into mapnik's sourcetree. It is a good example of how to add mapping capability to existingGUI frameworks. It really takes an afternoon to code a GIS viewer withMapnik C++.
Dec 03, 2005 | Artem Pavlenko
This is mainly a bugfix release.
- + support for agg-2.4
- + python bindings are not built by default (use EXTENSIONS=python with scons)
Sep 08, 2005 | Artem Pavlenko
- CSS color type parser
<color> ::= <keyword> |
# <hex> <hex> <hex> |
# <hex> <hex> <hex> <hex> <hex> <hex> |
rgb ( <int>, <int>, <int> ) |
rgb (<percentage>, <percentage >, <percentage> )
- More 'pythonic' feel
- datasource interface changes
The tarballs are now available at berlios
Sep 01, 2005 | Artem Pavlenko
New release! Some bug-fixes, better python integration, support for gcc4 and more. The tarballs are now available at berlios.
It has been a while since the first release.
Jun 15, 2005 | Artem Pavlenko
It has been a while since the first release. I took some time to assess future directions and plans for mapnik, did some research into existing free/non-free GIS projects and talked to some interesting people.
From the very beginning mapnik was a place for experimenting, trying new ideas and generally doing things a bit differently (and maybe better). Early on I decided not to link mapnik to existing free GIS projects/libraries. The majority of free GIS today is based around GDAL/OGR/UMN Mapserver etc. And while being a very useful bunch of tools indeed (I use them:-), they are, citing my son's book, 'good old steam engines from the past' in IMHO. :) Instead I launched into an ambitious attempt to write something which looks more to the future.
In addition, there has been so much great free software developed recently (boost, spirit, agg etc), that I couldn't help grabbing it.
Mapnik is still in its very early stages and actively looking for participants at every level. If you're interested, and like me you're into doing something new, I'd love to hear from you.
Apart from hacking I also added some new features to the project, based on my research.
boost librariesI didn't hesitate to use more boost libraries (I was using boost.python already). Boost offers a number of cross-platform c++ 'goodies' that increase productivity and is a great source of learning (for me at least :). At the time of writing the latest mapnik is relying on filesystem, regex, spirit, python and more from boost.org.
Expressions based styling
This is part of a general move toward compliance with OGC specifications. I decided to base mapnik's styling objects around SLD/Filter model (some geotools hacking) and as a result developed a 'macro-language' to encode filter expressions based on spirit. There are some missing features (notably 'spatial predicates'), yet it's functional enough to be useful.
There is support for:
- simple arithmetics (+ , - , * , / )
- comparison (= , <> , > , < , >= ,<=)
- logical operators (and, or , not )
- regular expressions (Boost.Regex)
Support for functions (min/max/abs etc) and 'spatial predicates' is in the pipeline.
Mapnik now uses the AGG library for rasterizing/rendering. I was already happily using some algorithms from AGG and decided to extend this.
New build system
At this point mapnik is using scons as a configuration/build tool. Scons is a '..next-generation software construction tool, or make tool...'. All configuration files are written in Python and as a result are easy to learn, program and extend.
Originally, mapnik was using GNU/Autotools to automate the build process, but I found myself spending far too much time fiddling with m4 macros, rather then writing any code:(.
I looked at the Boost.Build (bjam) and scons as potential replacements, but lack of documentation put me off from using Boost.Build for the time being. 'Scons' is a clear winner (python!) for me. However I will keep an open mind regarding other possibilities (perhaps Boost.Build v2 will be the one?).
Mapnik is now at berlios!
Feb 21, 2005 | Artem Pavlenko
Mapnik is now at berlios. So, it's out there, and I hope you are, too.