5

I've come across a variety of libraries for easily producing maps for printing, in a fully reproducible way using some sort of code or configuration file. For example, Kartograph looks lovely, Vincent can do some cool stuff, and basemap allows integration of geographic data with matplotlib.

However, I'm trying to produce maps which include raster data - and most of the options above only work with vector data. Are there any alternatives that will allow me to display rasters on my maps too?

Of course, I can produce the sort of maps that I want in ArcMap or QGIS fairly easily, but it is difficult to make the process automatable and reproducible. For example, if I produce one map, and then a few weeks later want to produce the same map (exactly the same view extents, exactly the same zoom, exactly the same scaling for the raster stretches) with some different data, it gets quite tricky. By doing this in some sort of automated/scripted way I'd remove a lot of these issues.

The key things I'd need are:

  • Produces good looking maps
  • Relatively concise (some of the basemap examples seem very long, and this is where something like Kartograph shines - see its documentation)
  • Can display rasters and vectors, with configurable symbology/display for both
  • Automatable

Does anyone know of a tool that will allow me to easily do this? If not, what is the best 'hacky' solution you've found? I can't be the first person to run into this problem, but I can't find a good solution online.

2

You don't say what scripting language, so I've assumed python.

Have you considered the arcpy.mapping module?

Another option is the Mapnik library.

  • arcpy.mapping is an excellent ground-up approach. You can create a MXD, add layers (raster and vector) and match symbology to existing layer files then export to a variety of formats, save and close the MXD all from command line... it will do the job very well but there's a bit of work in it scripting a map product library from config files presumably and extent polygons. Prior to arcpy.mapping this would have to be done in C#/VB.net - I used existing templates and repointed data sources, added/removed layers and modified extents.. this approach has some merit and may help shortcut the process – Michael Stimson Jul 14 '14 at 3:27
1

Additional option is to use MapSurfer.NET (C#, VB.NET) framework for styling and rendering maps in raster or vector format. You can fully automate the process of producing maps using the built-in style editor (similar to TileMill) and its functionality, or even use SDK to built your own chain of operations you want to perform. Note, if you really need not only pretty, but functional maps with good and cartographically plausible label placement. Then, MapSurfer.NET is a good option.

Please also note that the this framework currently lacks documentation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.