Before I start, this is going to be a general question but with specific cases. I've been trying to understand GIS tools and applications to achieve the following:

  1. Build my own basemap
  2. Publish the basemap online
  3. Add my own data layers to the online basemap
  4. Perform analysis (on-the-fly)
  5. Add interactivity to the map

So, In my first attempt, I built a spatially enabled database on PostGIS, queried this using PHP, overlayed it on google maps using their API and added interactivity using their api itself. I carried out analysis like area, denisty etc. on the fly using postGIS functions.

For my next attempt, I downloaded TileMill and rendered some really beautiful maps and added zoom level functions to it. I also exported my MBtile files. When I came across trying to publish this online, I hit quite a few names, but got lost and confused:

  1. TileStache
  2. TileCache
  3. TileStream
  4. Mapserver
  5. Mapnik
  6. GeoServer
  7. Mapbox

So, I understand these are mapservers. But what exactly does a mapserver do? Why is it used? Why can't i server my tiles from a normal web Apache server? And for MBtiles, how many servers are out there which lets you publish it directly?

I can also export my basemap as a png/vsvg format. Can these formats be used to make a basemap through a mapserver?

When researching interactivity I came across:

  1. Leaflet
  2. ModestMaps
  3. OpenLayers
  4. Mapstraction

I understand these are Javascript Mapping API's. But on what base map can I use these? Can it be used on Google maps? Can I use them on my own base maps too?

I basically want to understand the differences between these tools and which would be the best software stack to build a fully customized, interactive map with my own basemap.

Sorry if my question sounds to general. I will definitely be here to clarify my questions

  • Correct me if I'm wrong, but Mapnik is not really a mapserver, it's just a tool that generates map images. You still need some kind of mapserver to handle these map files if you're going the Mapnik way.
    – oskarlin
    Aug 29 '12 at 8:53

As you go deeper and deeper into the world of GIS, you'll realize that a lot of work has been already been done to solve common problems.

  1. You have your geographic data in your database. How do you arrange the various layers and render them, and add various map elements to produce a Map that you can print? You need a desktop GIS apllication. You could use one of the FOSS like QGIS, Grass, uDIG ect or a commercial option like ArcGIS desktop etc.

  2. You have geographic data in your database and want to use that to create to a map in your website dynamical. Use a mapserver to read the geo-data and create an image (rendered according to your requirements) for you on the fly that you can show to your users. There are many options for you like Geoserver, Mapserver, ArcGIS Server.

  3. Now you want an interactive slippy map on your website, and using a mapserver to come up with those images in real time is just slow. that's when you use a tiling software to precompute the tiles and serve them. This tiling software can be a mapserver in itself, or something that works with your mapserver, or could be built in the mapserver itself. When you read about TileMill, or TileStream or cached Map services from ArcGIS server, they are used for this purpose

  4. When you were creating the slippy map, how do you handle the various useractions, and calls to the server? Things like zooming in on double click, or calling for new tiles on panning the map, to showing the coordinates on mouseover, as well as stacking images/map/services from different servers/service? You use a client side mapping library like OpenLayers, Leaflet, ArcGIS server's Javascript API and so on.

So to conclude, these different softwares are there to fulfill different needs and solve different problems. You usually need more than one software and usually work with a stack of them, to make something easy and simple looking slippy map on a webpage.

  • Thanks @Devdatta_Tengshe -- as a complete beginner in web mapping, this is the first time I have ever understood the distinction between MapServer and OpenLayers. May I recommend adding software examples to #2 and 3, as you did in 1 and 4?
    – Scro
    May 12 '12 at 14:31
  • Thank you! Makes it much clearer. Can you also explain how tilemill works then? Where does that fit in here? Cause zoom functions are preset when you produce tiles. Does this feature overlap when I want to add a similar zoom/pan feature using leaflet/modest maps or similar client-side APIs? And are mapservers only for rendering tiles?
    – KaushikTD
    May 13 '12 at 10:45
  • @KaushikTD I haven't used Tilemill before, so take this comment at face value. Looking at Tilemill's website, it looks like it uses Mapnik as the webserver and creates tiles at a predefined scale levels (Tilemill's strength seems to be in creating nice looking tiles). It is your client-side API's responsibility to call the correct tiles at the correct zoom level. As for the mapserver: their main job is rendering maps, but often they have other functionalities as well. May 15 '12 at 1:45

A map server works for serving your maps to use them in your application. You dont have to use any map server. For serving maps I have been using nginx server as my folders scheme look like TMS scheme. Serving on nginx, I only use it as image, no processing or anything with them...but all application you have listed has different features.

The important point to think about here is: What are your needs?

Some map server have WMS, WFS ,WFS -T, WCS, sld, fes capabilities; some has SOAP, kml, REST support; Some have mobile support and also their languages are different such as Java, Python, .NET, C...

There is an comparasion here about of various geographic information systems (GIS) software.

When talking about Javascript Mapping APIs, people have more experience with Openlayers. But there are different clients for different needs. There is a web mapping client comparasion here


And the last thing is that the best everytime changes with people needs....

I hope it helps you...

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