ESRI ArcGIS Server Produces Low Quality Rasters

The Problem…

ArcGIS Server’s Image Map Service produces dynamic images of georeferenced rasters, allowing them to be consumed and visualized as image overlays in different clients.  However, the Image Map Service produces low quality rasters, and does not seem to provide adequate options to manipulate the compression algorithm that dictates the image production at higher zoom levels.

As an experiment, I have installed my own instance of ArcGIS Server and created an Image Map Service of a georeferenced historical map of Berlin in 1936.  I then created a page that displays the map for side-by-side comparisons with the same map produced and served using a custom built tiling application that uses ImageMagick for its image compression.  Here you can really tell the disparity between the imagery produced by ArcGIS Server and our own ImageMagick Tile cutter.  Click the image below to go to thelive interactive site.

ArcGIS Server vs Image Magick

Click the image to launch interactive comparison site

What We Are Trying To Do

The UCLA Digital Library is embarking on a massive digitization project of their Historical Map Collection. Tens of thousands of paper maps (some centuries old) are planned to be scanned, georeferenced and made available to the public in multiple digital formats over the next couple of years. Given the advent of GIS technologies, this digitization project will also make some of the maps available in GIS ready formats.

In doing so, I have been looking for the right technology to allow the public to consume these digital maps. The obvious choice for UCLA would be to use ESRI’s ArcGIS Server technology, this way leveraging the license agreement that exists between UCLA and ESRI. ArcGIS Server offers many great features, and out-of-the-box components that would greatly assist this project:

  • ability to catalog a large collection of maps
  • ability to publish maps in multiple, GIS ready formats including:
    • KML
    • WMS
  • ability to allow desktop GIS programs to access these maps as layers
  • built in REST API for advanced query based requests
  • pre-cached and dynamic tiling options for web mapping requests
  • tie-ins for different javascript based API’s, including support for Google Maps, Bing Maps and ESRI’s own ArcGIS Javascript viewer, FLEX viewer, and Silverlight viewer

The Problem With ArcGIS Server…

However… for a project that relies heavily on the preservation of historical material, the output visualization display is of utmost importance, meaning that the final raster image quality must preserve the original material as much as possible.  Here is where it appears that ArcGIS Server (and for that matter, ArcMap),  may not provide the quality control necessary to display these maps.

First, let’s have a look at what ArcMap and Photoshop does to an image once it is added to their respective applications.  For this experiment, we will use a 1978 map of Berlin.  Here is the original image:

Here is what it looks like in Photoshop, after it has been zoomed out to 5.27% of the actual size:

Map_ps

Now I proceed to add this map to ArcMap, and after building the default pyramids, this is what it looks like after I zoom out to a similar size:

Map_arcmap

You can already see a marked difference in the image quality display.  The default resampling that ArcMap uses is Nearest Neighbor, so switching to Bilinear produces a slightly better display:

Map_arcmap_bilinear

Although the bilinear sampling produces a better image than its nearest neighbor counterpart, it is still far from matching the quality desired.

Quick Resize vs Image Resize

What is important to note is that both examples here (photoshop and ArcMap) are showing images that are resized within the application.  There is probably a function vs speed factor involved here, and therefore, the image produced is probably not the best image the applications can produce, but rather, a “quick” resized version of the original image for display purposes.  This is perhaps why the photoshop image is actually not that great.  What you need to do to find out what a final output would look like is to resize the image as a new image.  Notice that the Photoshop image above has a label “@5.27%” on it.  This means that it is doing a “quick” resize to 5.27% of the original image.  Now let’s do an actual image resize at 5.27%.  In Photoshop, this is how that is done:

  1. Go to Image -> Image Size
  2. Under Pixel Dimensions, change the dropdown from “pixels” to “percent”, and enter 5.27 for the width and the height
  3. Under resample, choose “bilinear”

Here is the resulting image:

Notice that the image tab displays “@100%” now instead of “@5.27%”.  This means that the image is being displayed at its native resolution.  Compare this to any of the images above, and you will notice that it is by far the best image of the lot.  Flip through the following gallery to compare one to another:

[nggallery id=1]

How Does ArcGIS Server Handle Image Resize?

So the question now becomes, how would ArcGIS Server serve these images when you create a Map Service?  To answer this question, I used the “Preview ArcGIS Server” feature in ArcMap:

  1. In ArcMap, load the map and go to View -> Toolbars -> Map Service Publishing
  2. In the Publishing toolbar, click on the “preview” button
  3. Change the map scale to 1:70,000 as this most closely represents the same zoom scale as 5.27%

The following is the default output created:

preview-arcgis-server

Here you can click and view the photoshop version vs the ArcGIS Server preview:

[nggtags gallery=compare1]

Conclusion

What the UCLA Digital Library would want to accomplish is to generate the same image quality that is produced by Photoshop’s image resize.  As it is, the resize algorithm that ArcGIS Server uses to generate their image tiles does not meet the desired output quality.