In my last post I mentioned a way to get distinct values for a featureclass out of ArcIMS. This involved bending the rules 'creatively', but it got the job done which was the ultimate intent. Recently I was discussing with some colleagues another frustrating issue with ArcIMS; namely, that of stacking an ArcIMS image on top of (or below) a WMS image. Since ArcIMS has no native WMS client capabilities, we're always forced to stack the images in the browser. This can have some unfortunate side effects - partially transparent polygons become opaque, and antialiasing goes straight out the window. Observe:


This is the standard Geocortex IMF demonstration site, with the USGS Shaded Relief WMS dropped behind. Notice the absence of image behind the jurisdiction layer, the poor antialiasing of the roads over the shaded relief, and the barely legible "Gaston" label.

Now, we can't make ArcIMS become a WMS client, but we *can* work around these issues if absolutely necessary. What happens from the IMF perspective when we generate this image is that it requests the WMS image from USGS, and at the same time requests the ArcIMS image. It then drapes one over the other in the user's browser. If we changed the workflow a bit, we can do the following:

  1. Request the WMS image
  2. Save the WMS image somewhere the ArcIMS server can get it
  3. Add an acetate layer to the ArcIMS map with a single polygon. This polygon will cover the same area as the current map extent, which will also be the same area covered by the WMS image.
  4. Use a RASTERFILLSYMBOL to paint the polygon, and use the WMS image as the source.

Using this trick, our image now will look like this:


Ahhhh, much better!

Note that I did take the liberty of changing the symbology slightly for the jurisdictions layer to work well with the WMS, but you get the idea :)