Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am currently trying to render Water (3,198,333 records) and detailed world borders (processed_p) for the world. I am successful in rendering both layers, but I am not happy with performance.

My current setup is as follows:

  • Amazon EC2 instance (m2.2xlarge)
  • 34.2 GB of memory
  • 13 EC2 Compute Units (4 virtual cores with 3.25 EC2 Compute Units each)
  • 850 GB of instance storage
  • 64-bit platform
  • I/O Performance: High
  • Mapnik, 4 threads
  • Postgresql settings based on these benchmarks
  • GiST index in place for all of my layers

Some of my Ideas to Increase Performance:

  • Simplifying my features
  • Don't render water tiles - when loading with openlayers can set load failure to blue color
  • Split world water features into various sections and explicitly tell mapnik its bounds. For example, if I split water features from North America, when Mapnik is generating tiles for Australia it should not query North America to see if any of its features are in the tiles.
  • My second idea is a bit more crazy. Since Mapnik performs a spatial query for each tile in order to find features to process, I can perform this query beforehand for all of my layers. I would assume that this would save some processing power.

My Question: What else can I do to optimize tile rendering?

share|improve this question
    
Have you seen the "Optimize Rendering with PostGIS" github.com/mapnik/mapnik/wiki/OptimizeRenderingWithPostGIS for some tips? –  Mapperz Apr 19 '12 at 20:20
    
Hi Mapperz. Yes, I made sure to only load water features to my database. So, all of my polygons & lines are already prefiltered and are water features. I also vacuumed my database and applied the suggested indexes. –  user5584 Apr 19 '12 at 20:37
    
Hi, I haven't used Mapnik before but if it is possible to cache tiles at some zoom levels or for certain areas it will improve performance. –  dango Jun 28 '12 at 6:07
add comment

1 Answer 1

Here are some links: http://www.geofabrik.de/media/2010-07-10-rendering-toolchain-performance.pdf

http://www.geofabrik.de/media/2012-09-08-osm2pgsql-performance.pdf

another point: split data to more tables: the less objects to filter, the faster the rendering

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.