I have a Linux server, about 16 Gb of aerial photography files in GeoTIFF format and orders to set up a slippy map web application. This doesn't need to display anything from other data sources at the moment, but later on we might want to add other layers.

So, the questions: what software packages should I look at, and where could I find a decent tutorial? I know I'll need a client side and a server side. On the client side I am experienced with Leaflet, and using it with Google Maps and OpenStreetMap. On the server side, I have some little experience with PostGIS.


I'd start with GeoServer on the server side. You just need to put the files on the hard drive, create an ImageMosaic store, then publish whatever layers (perhaps just one) you need.

The ImageMosaic is the critical part - that will turn your collection of aerial photographs into a single image. Note that there are likely to be some artifacts where the images join (or don't join).

The services you export depend on how you intend to use the data. If you're familiar with Leaflet, then probably a TMS endpoint will be the easiest option. You configure that in the "Caching defaults" part of the (built in) GeoWebCache.

Once you've done a test / development installation, make sure you read the "Running in a Production Environment" section of the GeoServer manual. There are many tuning parameters, and very large images can strain the default JVM settings.

I don't think you really need to use PostGIS at this stage since your imagery is probably static and the indexing can just go on the disk. However it is a good idea to use a spatial database (and PostGIS is a great spatial database) for any kind of vector data.

GeoServer isn't the only option, by any means, but its a fairly easy configuration / setup, and offers the standard endpoints you're likely to be familiar with.

  • Thanks, that was quite helpful, GeoServer is definitely going to be the first solution I'm going to look at. The strain of a very large image is something that worries me. What are the reasonable limits that GeoServer can cope with? The area covered is not really large, but it's very high resolution. – Btz Nov 26 '14 at 15:57

Another option you could explore is using Tilemill to generate tiles from your GeoTIFFs. You can then just put the tiles on a webserver and call them using Leaflet. No need to set up databases or middleware.

Basically you load the GeoTIFFs into TileMill and export it as MBTiles. This is MapBox's format for storing the tiles in a SQLite database. You then extract the tiles as individual PNGs.

Instructions for loading the GeoTIFFs into TileMill can be found on Mapbox's TileMill docs while the rest of the steps are covered in a tutorial at Penn State's Open Web Mapping course.


You could look into Tilestache.

This tutorial may help get you started with what you want to do.


There are many solutions for your question, some more suitable than others based on constraints such space/memory available in your servers.

The client side looks like simple because you do not want to overlay any other layer at this moment, so leaflet or openlayers can help you.

The server side is a bit trick, since you need to decide how to provide your data. Options are wms or tms. If your data is static, I would go with tms and generate a set zoom levels of tiles. It can takes a long time based on the number of zoom levels and extension of your data, but once its done, you will have no geoprocessing activity, just serving a bunch of png/jpeg files via http protocol. The cons of this approach is that you will need a lot of space in your servers but pros is that access to this png/jpeg files will be quick since they are ready and you do not need any extra service (geoserver, mapserver, etc) but apache httpd running.

If you decide for this option, second question is: are your files in the final style that you want to publish? Usually you may have rgb files that contains that final style (set of colours/ranges) or in gray scale files and you problably have a pallete of colors that you want to apply.

In case of rgb files, the utility gdal2tiles.py can be you solution. It will generate the tiles and a client using openlayers so you can test your process.

In case of gray scale files, you can define style using mapnik style xml files and generate the tiles with the utility generate_tiles.py that is available in the mapnik website.

You can go with options using geoserver/mapserver/etc, but I do not think that you need this overhead of service since your data looks like static.


  • My images are static, and color, but it's very possible we are going to add more layers, some dynamic. Even so, converting the geoTiffs to tiles could be interesting because the workload at runtime should be lower. Is there a way I can calculate the disk space I need, even approximately? – Btz Nov 26 '14 at 15:54

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.