Linfiniti Geo Blog

GIS for Open Source People

Browsing Posts published on March 1, 2010

When we released QGIS 1.4 in January, I decided to host the QGIS-1.4.0-1-No-GrassSetup.exe download file here on my server at Linfiniti so I could try to get a sense of how many people are using our software. Estimating users in a FOSS project is a hard thing to do – our software is free and freely redistributable so one copy of the software may make its way onto many desktops. Also some operating system’s packaging technology make it hard to track download numbers – we cant easily see how many downloads have come out of the ubuntu-gis PPA for example. But for the user profile that runs windows and doesn’t want GRASS functionality, I can reveal that the total downloads from my server for the months of Jan and Feb is:

22461

To which I can only say: “Wow! I didn’t know that many people use Windows!”

This has been done before by others, but its always interesting to look at image quality versus size when starting a new project. Each project has different types of data and thuse different optimal configuration. Here is a simple breakdown of size vs quality I did for a project.

First let me show you my mapserver image format definitions…:

  OUTPUTFORMAT
    NAME 'AGG_Q'
    DRIVER AGG/PNG
    IMAGEMODE RGB
    FORMATOPTION "QUANTIZE_FORCE=ON"
    FORMATOPTION "QUANTIZE_DITHER=OFF"
    FORMATOPTION "QUANTIZE_COLORS=256"
  END 

  OUTPUTFORMAT
    NAME 'AGG_JPEG'
    DRIVER AGG/JPEG
    IMAGEMODE RGB
  END 

  OUTPUTFORMAT
    NAME          "AGG_PNG"
    DRIVER        "AGG/PNG"
    IMAGEMODE     RGB
    TRANSPARENT   ON
    EXTENSION     "png"
    FORMATOPTION  "INTERLACE=OFF"
  END 

  OUTPUTFORMAT
    NAME          "AGGA_PNG"
    DRIVER        "AGG/PNG"
    IMAGEMODE     RGBA
    TRANSPARENT   ON
    EXTENSION     "png"
    FORMATOPTION  "INTERLACE=OFF"
  END 

  OUTPUTFORMAT
    NAME "GD_JPEG"
    DRIVER "GD/JPEG"
    MIMETYPE "image/jpeg"
    IMAGEMODE RGB
    EXTENSION "jpg"
  END

  OUTPUTFORMAT
    NAME "GD_PNG"
    DRIVER "GD/PNG"
    MIMETYPE "image/png"
    IMAGEMODE RGB
    EXTENSION "jpg"
  END

Now lets look at how each performed in terms of rendering quality versus file size:

File Size : 10.5kb Format: RGB JPEG using GD renderer

File Size : 19.7kb Format: RGB Png using GD renderer

File Size : 11.9kb Format: RGB Quantised Png using AGG renderer

File Size : 37.6kb Format: RGB Standard PNG using AGG renderer

File Size : 37.6kb Format: RGBA Png using AGG renderer

To be fair I haven’t added the needed ANTIALIAS clauses for the GD renderer to produce anti-aliased images for true comparison with AGG. That said even GD at it’s best isn’t a patch on AGG in my opinion. Needless to say In this project I’ve gone with the Quantised AGG outputs which are almost as small as GD JPEG images but with much nicer quality.

Note: Updated 1 March to inline images rather having to click to view the full size.