[MapServer-users] mapserver 8 - CGI map_object substitutions broken?
sdlime at gmail.com
Thu Oct 6 12:49:32 PDT 2022
Hi Tim: I was wondering if I'd see any messages on that topic. Short story
is that the functionality was removed in MS8. I never liked the
all-or-nothing aspect of it and was working on a method to control which
objects would be allowed to be updated. The solutions I came up with were
convoluted and were going to add a lot of complexity to the codebase for
little value. That functionality is poorly documented and by itself overly
complicates the code. So after a note to mapserver-users trying to judge
how much it was used - with limited replies - it was decided to remove it.
I'm dealing with my own upgrade issues as a result, but it's worth it in
the end IMHO.
If necessary, it's better to revisit with another method - ideally
something along the lines of runsubs. The challenge is specifying when to
apply them and how to validate values. Strings are easy, but numeric/color
values aren't so we'd need to do something like add runtime bindings
(similar to attribute bindings) so you'd write SIZE %mysize% instead. One
advantage being you could reuse the variable across layers.
So, what are the options right now? It sort of depends on your needs. Do
you need to only support a couple of sizes for a class or do you truly need
*any* size? Options include:
- multiple mapfiles - probably using includes to limit redundancy
- class groups
- if you're using a db backend I think attribute bindings could work
paired with runsubs
DATA "shape FROM (select *, %textsize% AS textsize FROM ...)
SIZE [textsize] # I think attribute binding works here
- MapScript - load the mapfile, do the changes you need, render the map
Happy to discuss further and perhaps other folks have ideas.
On Thu, Oct 6, 2022 at 12:47 PM Tim Kempisty via MapServer-users <
mapserver-users at lists.osgeo.org> wrote:
> Good afternoon, all.
> I am migrating a project from MS7 to the new Mapserver 8.0.0, and I've
> stumbled upon evidence that map_object notation support for CGI variable
> substitution may be broken.
> Here's the relevant doc for CGI Controls:
> Scoll down to the heading: "Changing map file parameters via a form or a
> We have been using the map_object notation method to set custom image
> sizes and font sizes.
> Excuse the messy query string. The important parts are "&map_size" and
> /var/www/cgi-bin/mapserv.cgi -nh
> > /var/www/html/kempisty/foo7.png
> MS7 gives a map size 1215x677 with labels rendered in 8 point font, as
> expected. The same command, using mapserver 8 instead of 7, gives an
> image size 2345x1597 (map size as defined in the mapfile) with labels
> rendered in 13 point font (also as defined in the mapfile).
> Using MS8... if I send &mapsize=1215+677 instead of &map_size=1215+677 ...
> I will get the image at the correct size. So the predefined CGI control
> variables still work. It suggests to me, it is only the map_object
> notation method that is broken. Has that been disabled in MS8, or is it
> now subject to a new configuration requirement that I'm not aware of?
> Relevant string isolated for reference:
> I'm open to other methods of changing font size on the fly. We did it
> this way because %var% runtime substitutions aren't supported for CLASS:
> LABEL: SIZE.
> -Tim Kempisty
> MapServer-users mailing list
> MapServer-users at lists.osgeo.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the MapServer-users