A couple of newbie questions

kenboss kenboss at dilbert.dnr.state.mn.us
Thu Feb 17 11:59:40 PST 2000


Erich--

Of course, in your mapfile you've got a web template definition with at least 
this much defined:

WEB
  TEMPLATE surveys.html
END

Your surveys.html file drives your current pan/zoom interface through an html 
form.  In the simplest case, you need a button on the form that allows the user 
to specify whether they're just moving around on the map or trying to query a 
feature.  The variable the button controls is "mode".  When they're navigating 
the map, mode is set to "browse" (the default mode), and when they're querying 
features, mode is set to "query".  

The rest is handled in your map file.  To display and query both surveyed areas 
and the "holes" inside of them, you might have a layer like this in your 
mapfile:

LAYER
  NAME sites
  STATUS default
  DATA /data/archaeology/sites
  TYPE polygon
  CLASSITEM "survey_id"
  CLASS
    NAME "Real Survey Sites"
    EXPRESSION ([survey_id] > 0)
    SYMBOL 1
    COLOR 32 201 32
  END
  CLASS
    NAME "Doughnut Holes"
    EXPRESSION "0"
    SYMBOL 2
    COLOR 201 32 32
  END
  QUERYITEM "survey_id"
  QUERY
    EXPRESSION ([survey_id] > 0)
    template survey_detail.html
  END
  QUERY
    EXPRESSION "0"
    template not_surveyed.html
  END
END # Layer 


To display and query only surveyed areas, just remove a few lines from the above 
layer so that you end up with this:

LAYER
  NAME sites
  STATUS default
  DATA /data/archaeology/sites
  TYPE polygon
  CLASS
    NAME "Real Survey Sites"
    EXPRESSION ([survey_id] > 0)
    SYMBOL 1
    COLOR 32 201 32
  END
  QUERY
    EXPRESSION ([survey_id] > 0)
    template survey_detail.html
  END
END # Layer 


Note that I am a mapserver 3.2 user, and the expressions above are based on my 
reading of the online docs, not personal experience.  In the "old way of doing 
things", I would've used a regular expression like:

EXPRESSION "^[1-9]$|^[1-9][0-9]$"

to mean "any number from 1 to 99".  This is still a valid way to do things if 
you choose.

Your query template files will be full of regular html, except for where you 
need to swap in attributes from the shape that the user clicked on, where you'll 
have [THIS_ATTRIBUTE_NAME] and [THAT_ATTRIBUTE_NAME].

Hope this at least helps to get you started...

--Ken


> Hi,
>   Last weekend I finally got my own Mapserver application to work, at
> least to allow zooming and panning. I'm confused on quering and other
> things, still.
> 
> First:
> One of my layers (areas where archaeological surveys have been done) has
> internal polygons which are actually unsurveyed. Within the dbf file the
> value of SURVEY_ID for these is 0, all "real" polygons have a numeric code
> relating to a document number describing the survey.
> 
> Could someone show me a mapfile snippet that will only display polygons
> with SURVEY_ID > 0?
> 
> One of the other layers is the locations of reported archaeological sites,
> digitized as polygons. My users will want to be able to click on a site
> and get the information associated. The information is in a separate dbf
> file that can be linked to the coverage by a index number. 
> 
> What is the combination of mapfile information and html code that will
> make it possible for a user to click on a polygon, and get a listing of
> the associated record?
> 
> I hope these are simple...
> 
> Erich
> 
> ---------------------------------------------------------------------
> Erich Schroeder                    Phone: (217)785-0033
> Curator, Information Technologies  FAX:   (217)785-2857
> Illinois State Museum GIS Lab      Internet: erich at museum.state.il.us
> http://www.museum.state.il.us/ismdepts/anthro/staff/erich/erich.html
> ---------------------------------------------------------------------
> 




More information about the MapServer-users mailing list