Stop using MapScript. I recently gave this advice to an email correspondent, and I'm repeating it here for my readers. Cease, or at the very least, minimize your use of MapServer's various
language bindings. Instead, embrace MapServer's domain-specific language (DSL) and write more of the declarative cartographic scripts known as mapfiles. Use the mapserv (or shp2img) program to compile these scripts into images. This is the path to happiness and prosperity.
A common complaint of the mapscript programmer is: "My program runs N times slower than the MapServer CGI". Of course it does. MapServer's code has been stressed and optimized over the years. It's faster and less buggy than anything you're going to write without serious effort.
MapServer's scripting APIs are inconsistent and not well documented, not friendly to the user. On the other hand, your
favorite programming environment bristles with excellent tools for creating text documents such
as a MapServer mapfile. Ed McNierney has long advocated the use of C preprocessors to generate mapfiles. A fine example for Python is Allan Doyle's ElementBuilder-based
mapfile builder. I would be surprised if Ruby's Builder couldn't be extended in a similar
fashion.
Another reason to embrace MapServer's DSL is the reasonable expectation that tools will
evolve to port your MapServer mapfiles to other applications. Good luck getting help to
port your thousands of lines of custom mapscript code to PrimaGIS, Mapnik, or MapGuide.
MapServer has but one obstacle to programming in such a completely declarative style: you can't pipe in a script. The script must be a file on disk (hence the "file" in mapfile), and
this requires an often unnecessary I/O round trip. For the same reason, Allan has to write
his mapfiles out of Python to disk before he can load them again into mapscript map objects:
maps can not be instantiated from strings.
Why do these limitations persist in MapServer? Because developers
lost the declarative trail when they found mapscript.
Among them, I was caught up in writing too much code with mapscript.py. From a distance, it's clear to me
that I overlooked many of the benefits of using MapServer in a completely declarative style.
Comments
Re: So This is the ArcGIS Server ADF?
Author: dylan
Hi, I posted this on the blog in question, but I see that it was since edited out. The ADF application doesn't work too well on a mac: with safari or firefox, with JS errors and the like. Last night I wasn't even able to see the TIN. This morning I was able to see the TIN, or rather the tiled version of a TIN, however none of the analysis worked. Frankly, I saw better response times from the experimental pywps project! (https://wald.intevation.org/projects/pywps/ ) Cheers, DylanRe: So This is the ArcGIS Server ADF?
Author: Sean
Dylan, I see a comment on that blog attributed to you. Comment scrubbing is a pretty strong accusation. Are you sure?Re: So This is the ArcGIS Server ADF?
Author: dylan
ikes! thats egg on my face. I must have missed it. apologies to all involved. Dylan