Best choice for building static maps: PostGIS, SpatiaLite or Shapefile?

If the only reason you're contemplating adopting a new system is "'cause there's a shiny new system", don't do it. Until and unless you actually run into problems with the limitations of shapefiles, or want to take advantage of some specific features of postgis/spatialite/whatever, there's no need to change. Keep designing and producing maps.

Sooner or later the problems with shapefiles will come to a head, and that is the time to address them. The new shiny system will be even newer and shinier then.

It still a good idea to keep an eye on what's happening "over there", and take it for a spin from time to time, but don't invest in changing your whole production workflow until there are specific concrete advantages for doing so. Otherwise it's all too easy to spend months (years!) tinkering with the car in the garage and not actually going for a drive anywhere.


Spatialite could be interesting because it is fast for local use. You can load it directly into the RAM of your machine and it is only one file, so it is really portable and shareable. You can create R-tree indexes on geometry.

Just like PostGIS, Spatialite follows OGC standards and much of its functions are similar to PostGIS's and usable in SQL. It is also "[...]an alternative format to ESRI Shapefiles, which have several legacy issues (such as storage types and lengths of column names, etc.) " (PostGIS wiki).

The rasterlite plugin is also very performant to manage raster data using pyramids and image compression. (rasterlite official user manual)

PostGIS is also a good option, everything you need is there. It would be a better option if your data would be edited by many users simultanously or if you want to host large dataset such OSM. By the way, osm2pgsql is a reliable tool to import OSM data into PostGIS.

Advantages (among others) to use DB is that you can use SQL for queries and create spatial indexes. Futhermore, it is relatively easy to migrate layers between Spatialite, PostGIS and Shapefile format so you can easily use a mix of the three.

UPDATE 2019: I would prefer using GeoPackage over Spatialite for a standalone GIS SQLite database


The main advantage of Spatialite is that it comes as just one file, which you can easily share and backup. Postgis needs much more effort to port the data from one computer to another.

Shapefiles have their limitations on column names, but can easily handle non-EPSG projections. Editing of larger amounts of data gets painful with simple shapefiles, so thats why I switch to spatialite as soon as possible.

I use Postgis for OSM data because it can take huge loads of data without killing QGIS as frontend, and it responds quickly. The polygon handling of osm2pgsql is far better than all osm-to-spatialite importers I have seen so far.

So, effectivley I use all three of them.