I recently starting using gdal2tiles.py (and its parallel implementation) to generate tiled images from raster datasets for kml interpretation and I'm shocked by how computationally intensive the process is. For example, rendering a 3.8MB PNG image of the US (35000 x 15000 px - or 2500 dpi @ 14" x 6") with tile levels 0-7 takes over an hour on a modern quad-core system. Even then, the resolution isn't all that great!

What is happening during the tiling process that is so computationally intensive?


For starters, that's 525 mega-pixels uncompressed, so the 3.8MB number isn't very useful in thinking about the complexity. All these pixels have to be re-sampled to generate the different tile levels. It's a lot of work. It's also incredibly I/O intensive, so it doesn't matter how more cores you have unless you also have a lot of disks with separate controllers. Oh, and then you have to compress all those tiles back down to the small size we all want.

  • 1
    +1 as 525,000,000 pixels uncompressed is approximately 1.5GB of data assuming 8bit PNG with 3 bands and no alpha channel. – user2856 Mar 17 '14 at 1:39
  • I accept that the compression/decompression process makes it quite difficult. However my disk monitoring doesn't suggest that its incredibly I/O intensive. In any case, I gather that uncompressed input data is probably better to use, right? – metasequoia Mar 17 '14 at 3:47

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.