[mapserver-users] HTML Legend with Status Checking...

Mike Smith nospam at cnrit.tamu.edu
Tue Oct 1 16:39:34 EDT 2002


OK, I'll buy that.  I'm disappointed to hear that, though, because my 
.map file is 3400 lines long and I've got 4 versions of it to alter each 
time I make a change because I provide users a java-applet based version 
of the page and a non-applet version, as well as large and small map 
variations...OUCH!  This is going to be very tedious to implement, but I 
guess that's what I get paid for!  :-)

About the scaleable symbols...I'm not using them because I don't know 
what they are?  I've got a symbols.sym file defined (that I took from 
the maplab tar archive) and it's got a bunch of symbols defined in it 
and I scale them with the "SIZE" keyword in my map file...is there 
something else I could do?  What exactly is a "scaleable symbol"?

Thanks very much for your help!

Martin, Daniel wrote:

> It's all clear now.  Sorry for the misunderstanding.
>
>  
>
> AFAIK, classes don't have a status you can access in the 
> HTML legend like layers (unfortunately).  What I know will work 
> (because I do it all the time) is creating 4 separate layers each with 
> 1 and only 1 class and moving your MINSCALE and MAXSCALE settings to 
> the layer object.  Give all the layers the same name (very important). 
>
>  
>
> This will perform exactly the same since you have no crossover of 
> scale, and the HTML legend will perform as you expect it to. 
>
>  
>
> On a separate subject, you might be better off using scaleable symbols 
> rather than your current solution.  But, perhaps you have reasons for 
> not using them.
>
>  
>
> -Dan
>
>  
>
>  -----Original Message-----
> From: Mike Smith [mailto:nospam at cnrit.tamu.edu]
> Sent: Tuesday, October 01, 2002 2:43 PM
> To: Martin, Daniel
> Cc: mapserver-users at lists.gis.umn.edu
> Subject: Re: [mapserver-users] HTML Legend with Status Checking...
>
>     LAYER
>       NAME Parima_Surveyhouseholds
>       GROUP Region
>       TYPE Point
>       STATUS off
>       DATA parima_surveyhouseholds
>       HEADER 'parima_surveyhouseholds.shp_header.html'
>       TEMPLATE parima_surveyhouseholds.shp_query.html
>
>           CLASS
>             MINSCALE 20136780
>             Name 'Parima Survey Households'
>             SYMBOL 'triangle'
>             SIZE 5
>             COLOR 255 0 0
>             OUTLINECOLOR 0 0 0
>          END  # CLASS
>
>           CLASS
>             MINSCALE 10068390
>             MAXSCALE 20136779
>             Name 'Parima Survey Households'
>             SYMBOL 'triangle'
>             SIZE 8
>             COLOR 255 0 0
>             OUTLINECOLOR 0 0 0
>          END  # CLASS
>
>           CLASS
>             MINSCALE 5034193
>             MAXSCALE 10068389
>             Name 'Parima Survey Households'
>             SYMBOL 'triangle'
>             SIZE 11
>             COLOR 255 0 0
>             OUTLINECOLOR 0 0 0
>          END  # CLASS
>
>           CLASS
>             MINSCALE 0
>             MAXSCALE 5034192
>             Name 'Parima Survey Households'
>             SYMBOL 'triangle'
>             SIZE 15
>             COLOR 255 0 0
>             OUTLINECOLOR 0 0 0
>          END  # CLASS
>
>     END  # LAYER
>
>     Martin, Daniel wrote:
>
>>     Could you provide the map file definition for the Parima Survey
>>     Households layer?
>>
>>      
>>
>>     Thanks,
>>
>>     Dan
>>
>>         -----Original Message-----
>>         From: Mike Smith [ mailto:nospam at cnrit.tamu.edu ]
>>         Sent: Tuesday, October 01, 2002 11:56 AM
>>         To: Martin, Daniel
>>         Cc: mapserver-users at lists.gis.umn.edu
>>         Subject: Re: [mapserver-users] HTML Legend with Status
>>         Checking...
>>
>>         Same thing.  Now I don't have group header bars seperating my
>>         layers, but all the layers still show up and when I click on
>>         a layer that has scale-specific classes, the symbols for all
>>         scales still show up.  By the way, I'm on Mapserver 3.6.1 and
>>         here's the page to go to if you want to see what I'm talking
>>         about:
>>
>>         http://cnrit.tamu.edu/maps/map_init.html
>>
>>         Click on the very last button on that page (the one that says
>>         "FRAMES VERSION" on it).  When the map shows up, expand the
>>         "Regional" folder on the left-hand side to display those
>>         layers.  The one that I'm working on right now is called
>>         "Parima Survey Households".  Click on that layer to load it
>>         into the map, then you'll see the various symbols I'm
>>         referring to show up in the legend.  I represent the Parima
>>         households with red triangle symbols and I have different
>>         sized triangles depending on how far zoomed in you are so
>>         that they are small at a high scale and larger as you zoom
>>         in...but I don't want all versions of that symbol to show up
>>         in my legend all the time...just the one that's in scale.
>>
>>         Thanks again!
>>
>>         Martin, Daniel wrote:
>>
>>>         Try this.  Take out the leg_group_html section, and the
>>>         leg_layer_html section, leaving only the leg_class_html
>>>         section.  Take them out entirely - don't leave an empty set
>>>         of tags.  Then, let me know what happens.
>>>
>>>          
>>>
>>>         -Dan
>>>
>>>             -----Original Message-----
>>>             From: Mike Smith [ mailto:nospam at cnrit.tamu.edu ]
>>>             Sent: Tuesday, October 01, 2002 11:33 AM
>>>             To: Martin, Daniel
>>>             Cc: mapserver-users at lists.gis.umn.edu
>>>             Subject: Re: [mapserver-users] HTML Legend with Status
>>>             Checking...
>>>
>>>             Gladly.  Here is my legend code:
>>>
>>>             [leg_group_html]
>>>               <tr>
>>>                     <td colspan=3
>>>             bgcolor=#cccccc><b>[leg_group_name]</b></td>
>>>               </tr>
>>>             [/leg_group_html]
>>>
>>>             [leg_layer_html]
>>>             [/leg_layer_html]
>>>
>>>             [leg_class_html]
>>>               <tr>
>>>                     <td width=15>&nbsp;</td>
>>>                     <td>
>>>                       <img src="[leg_icon width=15 height=15]"
>>>             width=15 height=15>
>>>                     </td>
>>>                     <td>
>>>                       [leg_class_name]
>>>                     </td>
>>>               </tr>
>>>             [/leg_class_html]
>>>
>>>
>>>             However, it does not work as you say (and as the
>>>             documentation on the web page says!).  Layers that are
>>>             "off" do not show up (that's as expected and what I
>>>             want), that's fine, but layers that are out of SCALE DO
>>>             show up, and that's not as expected and that's not as
>>>             the documentation states and that's NOT what I want.
>>>              For example, I have a layer called
>>>             Ethiopia_Rivers...here's what it looks like:
>>>
>>>             LAYER
>>>               NAME "Ethiopia_Rivers"
>>>               TYPE LINE
>>>               STATUS off
>>>               GROUP Ethiopia
>>>               DATA "ethiopia_rivers"
>>>               HEADER 'ethiopia_rivers.shp_header.html'
>>>                   CLASS
>>>                     MAXSCALE 8710165
>>>                     Name 'Ethiopia Rivers'
>>>                     COLOR 102 204 255
>>>                     TEMPLATE ethiopia_rivers.shp_query.html
>>>                  END  # CLASS
>>>             END  # LAYER
>>>
>>>             Now, when I'm viewing my map at full extent, my scale
>>>             factor is 1: 20136789, therefore if I click on the
>>>             Ethiopia_Rivers layer at that zoom level, nothing shows
>>>             up in the map.  This is the exact behavior that I would
>>>             expect...I'm out of scale for that layer, so it doesn't
>>>             show up in the map until I zoom in.  The PROBLEM,
>>>             however, is that the "Ethiopia Rivers" icon and label
>>>             pop up in my legend...this is counter-intuitive,
>>>             contrary to the documented behavior of Mapserver, and
>>>             just flat-out frustrating!  If the layer is not showing
>>>             up in my map (because it's out of scale), then it should
>>>             NOT be in my legend either.  Grrrr!!!  Pardon me for
>>>             sounding bitter...I'm not lashing out at you, I'm very
>>>             grateful for your help, I'm just frustrated at Mapserver.
>>>
>>>             Thanks!
>>>
>>>             Martin, Daniel wrote:
>>>
>>>>Perhaps I misunderstood.  By default (no opt_flag set) layers that are out
>>>>of scale and layers that have a STATUS off will not show in an HTML legend.
>>>>
>>>>
>>>>A legend exactly like this should do exactly what it sounds like you want:
>>>>
>>>>[leg_class_html]
>>>><TR>
>>>>  <TD>
>>>>   <img src="[leg_icon]" border=0>
>>>>  </TD>
>>>>  <TD>	 
>>>>    <font face="arial" size=2>[leg_class_name]</font>
>>>>  </TD>
>>>></TR>
>>>>[/leg_class_html]
>>>>
>>>>I'm not sure why you are having trouble getting the default action.  Perhaps
>>>>you could provide your current legend.
>>>>
>>>>-Dan
>>>>
>>>>-----Original Message-----
>>>>From: Mike Smith [mailto:nospam at cnrit.tamu.edu]
>>>>Sent: Tuesday, October 01, 2002 10:59 AM
>>>>To: Martin, Daniel
>>>>Cc: mapserver-!
>>>>user!
>>>>
>>>>s at li!
>>>>
>>>>sts.gis.u
>>>>mn.edu
>>>>Subject: Re: [mapserver-users] HTML Legend with Status Checking...
>>>>
>>>>
>>>>Thank you, but this didn't change a thing.  Actually, let me correct 
>>>>that...it had a negative effect because now all my layers show up too, 
>>>>even if they are not displayed in the map.  I want only active layers to 
>>>>show in the legend and I want only IN-SCALE class symbols to show up in 
>>>>the legend, I don't want 4 symbols to show up in the legend for every 
>>>>layer that I have which has scale-specific classes...I just don't guess 
>>>>I can do that without converting everything over to Mapscript.  X-(
>>>>
>>>>Any other ideas?
>>>>
>>>>Martin, Daniel wrote:
>>>>
>>>>>You probably want a bit mask of 2 in your opt_flag.  Layers with STATUS off
>>>>>still show, but layers out of scale don't show.  
>>>>>
>>>>>[leg_layer_html opt_flag=2]
>>>>>
>>>>>
>>>>>Per http://mapserver.gis.umn.edu/doc36/html-legend-howto.html :
>>>>>
>>>>>1: If set, show layer even if out of scale (default: hide layers out of
>>>>>scale). 
>>>>>
>>>>>2: If set, show layer even if status is OFF (default: hide layers with
>>>>>STATUS OFF). 
>>>>>
>>>>>4: If set, show layer even if type is QUERY (default: hide layers of TYPE
>>>>>QUERY) 
>>>>>
>>>>>8: If set, show layer even if type is ANNOTATION (default: hide layers of
>>>>>TYPE ANNOTATION) 
>>>>>
>>>>>
>>>>>In my experience, opt_flag=2 is the most intuitive.
>>>>>
>>>>>-Dan
>>>>>
>>>>>
>>>>>
>>>>>-----Original Message-----
>>>>>From: Mike Smith [mailto:nospam at cn!
>>>>>rit.!
>>>>>tamu!
>>>>>.ed
>>>>>u]
>>>>>Sent: Mo
>>>>>nday, September 30, 2002 5:06 PM
>>>>>To: mapserver-users at lists.gis.umn.edu
>>>>>Subject: [mapserver-users] HTML Legend with Status Checking...
>>>>>
>>>>>
>>>>>Hello,
>>>>>
>>>>>   I've seen how you can make legends using PHP Mapscript that check to 
>>>>>see whether a layer or class is in scale before displaying it in the 
>>>>>legend, but no mention of how to do this if I'm not using Mapscript.  I 
>>>>>have sub-classed many of my layers so that symbols show up in different 
>>>>>sizes depending on how far zoomed in you are.  In other words, I'm using 
>>>>>"MINSCALE" and "MAXSCALE" in my classes, but all of my classes show up 
>>>>>in the legend and that's really annoying!  I want ONLY the in-scale 
>>>>>symbol to show up in the legend as it does in the map...any tips on how 
>>>>>to do this without Mapscript?  I see the "if" conditional statements in 
>>>>>the HTML Legend How-to, but!
>>>>> there
>>>>>'s no status o
>>>>>f "SCALE" to 
>>>>>check with 
>>>>>those statements... if I could put an if statement in my legend template 
>>>>>that checked whether or not a class or layer was in scale, then I'd be 
>>>>>in business...any way to do this?
>>>>>
>>>>>Thanks!
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20021001/8f9d59fe/attachment.html


More information about the mapserver-users mailing list