The wwwquery.aml AML program
Updated Tue Jun 20 13:45:05 CDT 1995
This AML will:And, finally, as the aml exits (&return) the two scripts (faunmap.csh and mapform.cgi) also exit and the html document is served.
- Make the necessary map and translate it to postscript
- Translate the map to an image (Ghostscript ==> netpbm utilities)
- Unload a listing of the sites to a temporary file
- Serve the image and listing
- Clean up the scratch files
- End the html document and serve it.
I'm sorry, but although the AML is one document I'm going to have to chop it up for discussion here. I think that this is ok because there is no reason that you would want to use it intact as so much is dependent on the pathnames on this system.
Anyway, here goes:
&args pid age taxon dist &messages &off &workspace /usr/faunmap/www &if %dist% cn 'y' &then &if [exists $FAUNMAPHOME/mammal/[locase %taxon%] -cover] &then &s dist = y &else &s dist = n
The four &ARGS are: pid, the PID of faunmap-map.csh (used to maintain unique filenames); age, the 4-character age category code; taxon, the taxon code (for example ODva for Odocoileus virginianus or White-tailed deer), and; dist, a 1-character code "y" or "n" determining whether a modern distribution is requested. Arc info messages are turned off, and if we do not have the modern distribution digitized, the value of dist is set to "n".
&if [exists /usr/faunmap/www/images/[locase %age%%taxon%%dist%].gif -file] &then &goto nomap &else &do
Check to see if this combination of age, taxon, and distribution has already been been produced by previous queries. If so, don't bother remaking the map. This saves lots of time and the GIF's are small so it doesn't take up much disk space. If the map does not exist, then run arcplot.The arcplot stuff is all standard, so I won't bother to discuss it.
arcplot display 1040 /tmp/%age%%taxon%%dist%%pid% pagesize 5 5 mape $FAUNMAPHOME/base/usabase mapposition cen cen maplimits [show mapextent page] &if %age% ne 'ALL' &then res alltaxa.dat info age cn [quote %age%] res alltaxa.dat info taxon cn [quote %taxon%] res $FAUNMAPHOME/data/sites point keyfile alltaxa.dat sites-id &s count [extract 1 [show select $FAUNMAPHOME/data/sites point]] &if %count% eq 0 &then &do &type Sorry, there are no localities that match Age= %age%, and Taxon = %taxon% q &goto nothing &end &if %dist% cn 'y' &then &do reselect $FAUNMAPHOME/mammal/[locase %taxon%] poly [locase %taxon%]-id gt 0 shadeset colornames polygonshades $FAUNMAPHOME/mammal/[locase %taxon%] 25 &end arcs $FAUNMAPHOME/base/base arcs $FAUNMAPHOME/base/country arcs $FAUNMAPHOME/base/states markercolor 2 points $FAUNMAPHOME/data/sites &s count [extract 1 [show select $FAUNMAPHOME/data/sites point]] &s ybase = [extract 2 [show maplimits]] &s xbase = [extract 1 [show maplimits]] move %xbase% [calc %ybase% - 0.5] textset font.txt textsymbol 1 textsize .2 text [quote N= %count%] move %xbase% [calc %ybase% - 0.25] text [quote Age= %age% Taxon= %taxon%] quit
Ok, now we are out of arcplot. Unfortunately the eps files created by the display 1040 2 command in Rev 6 doesn't seem to work with ghostscript, so I have to make a normal display 1040 ".gra" file and use the arc postscript command. The "&label nothing" is for cases where the query came up blank and in those cases the AML drops out of arc.What is more important here is the
&sys /u/WWW/research/faunmap/query/ps2gif.cgi...directive as that is where the postscript file is translated to a GIF.
postscript /tmp/[locase %age%%taxon%%dist%%pid%.gra] /tmp/%age%%taxon%%dist%%pid%.ps &label nothing &sys rm /tmp/[locase %age%%taxon%%dist%%pid%].gra &if %count% lt 1 &then &return &sys /u/WWW/research/faunmap/query/ps2gif.cgi [locase %age%%taxon%%dist%] %pid% &end &label nomap
Now we echo the necessary anchor and image tags to imbed the GIF as an inline image that can be downloaded. Also the necessary text to act as a legend is added below the image.
&type <a href="/research/faunmap/query/images/[locase %age%%taxon%%dist%].gif"> &type <img src="/research/faunmap/query/images/[locase %age%%taxon%%dist%].gif" &type alt=[quote %age%%taxon%%dist%.gif]></a><br> &if %dist% eq 'y' &then &type Shaded area is the modern distribution. <br>
Now we make the listing. My very strong advice is to do this portion first, before you try the inline map mess. I say this because it is a faster and clearer way to test to see if you arguments are being passed correctly.This section works by starting up tables, doing the necessary reselects, unloading to results to a temporary file, then using "&sys cat" to stick it into the html document. It also works just to set "&messages &on" and do a "list" command.
The relate is set up to serve as a lookup table so I can save a little space.
tables sel alltaxa.dat &if %age% ne 'ALL' &then reselect age cn [quote %age% ] reselect taxon cn [quote %taxon% ] &fullscreen &nopaging relate add SITE allsites2.dat info SITES-ID sites-id ORDERED AUTO ~ &type <hr>The following localities have records for: &if %age% eq 'ALL' &then &do &type Taxon = <b>%taxon%</b> for all ages &type <pre> &type Mach# Age Taxon Site Name State/County &end &else &do &type age= <b>%age%</b> and taxon = <b> %taxon%</b> &type <pre> &type Mach# Taxon Site Name State/County &end &type ============================================================ &if %age% eq 'ALL' &then unload /tmp/[locase %age%%taxon%%pid%].txt num,ag,tx,site//name,site//st,site//county COLUMNAR /tmp/temp.fmt init &else unload /tmp/[locase %age%%taxon%%pid%].txt num,tx,site//name,site//st,site//county COLUMNAR /tmp/temp.fmt init q stop &system cat /tmp/[locase %age%%taxon%%pid%].txt &system rm /tmp/[locase %age%%taxon%%pid%].txt &return
There.Everything now returns to the way it was, except there is now a new GIF image sitting on our server.
| ISM Home | | General Information | | Programs | | Events | | Exhibits | | Collections | | Sites | | Membership |
© Illinois State Museum Society-- Last updated 21-Mar-96 by Erich Schroeder