I'm a long-term user of ESRI software, and I now have a need to use free and open source software.

I've been reading about OpenLayers, PostgreSQL, PostGIS, GeoServer and MapServer but I can't find a good overview stating what each product does, why it's needed, and how they all fit together.

For example, http://www.osgeo.org/ and http://freegis.org/ both list a bunch of products but don't give enough information for me to decide which ones are relevant.

In ArcGIS, I would use the following:

  • file geodatabase or ArcSDE geodatabase for data storage
  • ArcMap desktop to edit the data and compile the map document
  • ArcGIS Server to create web services
  • ArcGIS Server JavaScript API to create the end-user maps from the web services

What are the equivalent FOSS products?


4 Answers 4


To store the data, the first two alternatives to mention are PostGIS and SpatiaLite.

  • SpatiaLite is a SQLite database with spatial capabilities which means it is file based, compact, and fast.

  • PostGIS is spatial capabilities on a PostgreSQL database. That means it is very powerful with capacity to handle large data sets, complex queries in a efficient way.

Before moving on to the desktop you should be aware that very many tasks can be done very efficiently directly in the database. Most things you usually do in ArcMap sitting waiting for different dialogs to pop up you will do many times faster directly with a few lines of SQL code. That means that you can also store what you did and do it again on another data set very easily by just saving your SQL code. Many of the PostGIS questions here are about how to write those queries, so you can get an idea about what can be done by browsing PostGIS tagged questions.

Then the desktop side. There are a lot of desktop solutions. I think it is time to admit that on the desktop side ESRI is good. As said before most of the tasks you do in ArcMap are better done deeper down in the database, but when it comes to the tasks where you need the desktop solution ArcMap is good. What I use is QGIS, and if I had a budget to spend I would move the ESRI license costs to support bug-fixing in QGIS. QGIS is great software that can do more or less everything that ArcMap can. But maybe one or two ArcInfo licenses (in money) are needed to polish it. You can also take a look at Open Jump, GvSIG, uDIG and more.

When it comes to web services you have MapServer, GeoServer, TinyOWS, and more.

  • GeoServer is probably the easiest to get started with since it has a quite intuitive web interface. GeoServer can do most of the things you want. It can serve WMS WFS Tiled services and so on. It is all written in Java.

  • MapServer is written in C and I think it is fair to say it is the king of WMS-services. At least it won last year's shootout on FOSS4G conference (ESRI didn't dare to participate). Mapserver is configured through a "map-file" and I don't know of any graphical interface. But for serious wms-serving it is a very interesting alternative.

  • For editable wfs-services you have GeoServer mentioned before but also TinyOWS. TinyOWS is a small wfs-server written in C. Lately it has been more integrated in Mapserver since you can use the same map-file for both.

Then the client side on the web. I don't know very much about all the possibilities there but most solutions are built in one way or another on OpenLayers which is a Javascript library.

Moving from the ESRI world I think opens another very important possibility for you. If you want, you are free to move away from the Windows platform too. You can put everything on any Linux-distro.

The software mentioned above together with Linux will reduce the need of hardware a lot.

An example of well working FOSS software is the map of Norgeskart, from the official map authority in Norway.

In bottom they use PostGIS serving Mapserver. Caching tiles in Geowebcache and using an OpenLayer based client on top. It is not flashy like a Silverlight solution but that is possible to do too.

They used ESRI software before but had to leave that when their needs increased in terms of capacity and speed.


Nicklas has already pointed out the most popular open source packages. If you are interested in a closer coupling of desktop and server GIS, you might want to have a closer look at QGIS.

Similar to the setup you described for ArcGIS, there is such a setup for QGIS:


Speaking from the perspective of what I use day-to-day (though this is colored by my involvement in most of the projects):

  • file geodatabase or ArcSDE geodatabase for data storage

PostGIS, SQLite, and Shapefiles, in order from best database to most portable format.

  • ArcMap desktop to edit the data and compile the map document

QGIS for spatial operations, TileMill to compile the map document (assuming that you mean map document as in styles, combination of datasources, and so on)

  • ArcGIS Server to create web services

TileStream for serving generated maps from TileMill, or TileStache for live rendering. However, many, many groups are going the route of generating maps rather than live serving given the experience of keeping servers online and fast.

  • ArcGIS Server JavaScript API to create the end-user maps from the web services

Leaflet if you want to avoid doing extra development. TurfJS for analysis tasks in-browser.

  • file geodatabase = PostGIS
  • ArcMap = QGIS with a PostGIS in Postgresgl backend
  • ArcGIS Server = Geo Server, Map Server, QGIS Server
  • ArcGIS Server JavaScript API to create the end-user maps from the web services = Open Layers with Mapfish.

The stack can be installed from the postgresql site with the stackinstaller.

Simplest solution is to install a LAPP stack with Postgresql, containing a Post GIS database and maybe a tomcat server that calls Apache, for the last part you would need a domain name or have your ISP support serving data to the web from your server.

Install QGIS for a nice GUI with decent application functionality and connect it to your Post GIS container. Works well without the apache and tomcat for intranets.

You would need to develop an application using the web root of the apche installation for serving over the internet unless you are cloud based.

To develop in a browser as a client that can be called in the browser is more developement intensive and requires something like Open Layers and or Mapfish. This is the least painful way and their are many other options and considerations as well.

For the desktop this works well, however, minus Mapfish and Open Layers.

Here is kind of what it looks like, logicaly. Post GIS > Postgresql > Geoserver > QGIS > Tomcat > Mapfish

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