Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I could give a lot of examples, but imagine you have to do, for example, a study in 10 different locations and have to generate a lot of maps with the same layout, legend.

Maps can contain vector and raster data.

It should be scriptable, because a large number of maps have to be made/remade in the future.

Which platforms can do this?

share

locked by PolyGeo Apr 11 at 8:58

This question's answers are a collaborative effort: if you see something that can be improved, just edit the answer to improve it! No additional answers can be added here

up vote 9 down vote accepted

I had the same problem last year : a few dozen of maps to produce within three days, same legend, but different locations.

I used this setup :

  • vector data in PostGIS
  • raster data in GeoTiff (shaded relief)
  • cartographic engine : MapServer, with PDF vector output
  • batch processing : PHP to automate MapServer, with MapScript PHP
  • finalization with Adobe illustrator and a specialized style palette.

It takes a little time to produce and fine-tune the mapfiles, but the gain in time is tremendous. I produced 45 print-quality maps within 3 days.

share

If you have access to ArcMap, examine the arcpy mapping module:

Arcpy.mapping is a Python scripting module that is part of the ArcPy site package. It gets installed with ArcGIS for Desktop and is available to all licenses. It was designed primarily to manipulate the contents of existing map documents (.mxd) and layer files (.lyr).

and also Data Driven Pages:

Data Driven Pages allow you to quickly and easily create a series of layout pages from a single map document. A feature layer, or index layer, divides the map into sections based on each index feature in the layer and generates one page per index feature.

share

QGIS is evolving quite rapidly, but it certainly has the core components for automated map production: its map and print composition formats are stored in XML, map composition can be done programmatically via python (e.g. this question) with PyQGIS map compositon.


QGIS now has a Mapbook plugin: Are there any tools / plugins to develop mapbooks using QGIS?

share

I've had a really good experience using the MapBook extension, which is available in an open-source and a commercial (http://www.maplogic.com/) version. I personally use the commercial version and, for a single user with the basic functionality it's very affordable.

share

Just for reference: I have used R for this (too little time to investigate new procedures). It is well scriptable, but not really useful for complicated maps with eg a sophisticated legend. But since my maps only contained one variable this was no issue.

share
1  
Could you please provide some examples/links? – Chad Cooper Feb 19 '11 at 17:15
    
I'd suggest looking at: asdar-book.org/code.php?chapter=2&figure=-1 – johanvdw Feb 21 '11 at 19:11

I've used both ESRI and open source tools for map automation.

The ESRI components are mentioned above, but if you have a lot of labeling to do the maplex extension is something that would save a lot of time. So

  • ArcMap with the maplex extension for map authoring.
  • mapbooks with arcpy.mapping to script the map output.

I have had trouble with the generation of legends with arcpy.mapping but if you have the same legend on each map, this may not be an issue. If you have access to ArcGIS Server you can publish you cartography as a map service and generate maps with the REST api, but this might be overkill.

If you don't have ESRI tools I'd use a similar setup to the mapserver stack mentioned above but using python and mapnik.

  • Postgis / spatialite / shapefiles for your vector data.
  • Qgis for any data work, and for easy mapnik previews.
  • Mapnik for cartographic rendering.
  • Mapnik's python bindings for scripting the map output (many formats avail).
  • Inkscape for any custom markers, graphics or legends.

Both postgis and mapnik require a bit more front end work to set up. Mapnik was simply the best rendering engine when I first used it, ESRI and mapserver have caught up since then.

In short, at work I'd use ESRI tools as the software provides a great interface for quick cartography, and the maplex labeling engine works very well, even if arcpy.mapping isn't quite as flexible as I'd like.

At home I'd use the open source stack because it is much more flexible and infinitely cheaper!

share

This is an old question, but in case somebody is still looking for a solution, check out GMT as well: http://gmt.soest.hawaii.edu/

share

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

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