[mapserver-dev] Default values for bindings?

Stephen Woodbridge woodbri at swoodbridge.com
Sun Apr 22 16:14:28 EDT 2012


Hi Devs,

Do we have the ability to set default values for a bound attribute 
column? Is this something we should consider, if not?

What is the behavior if a bound attribute is NULL and the value is to be 
used for example as:

TEXT '[col]'
ANGLE '[col]'
SYMBOL '[col]'
SIZE '[col]'
WIDTH '[col]'
etc.

It seems to me that there are two desirable options that we might want 
to support:

* set a default value maybe like:     '[col:=default]'

In this case, the attribute would take on the value of default is the 
bound value was null. An alternative to this syntax would be to add a 
SQL function to our expression parser like:

(coalesce('[col]','default')

This has the advantage that you could do something like this:

TEXT (coalesce(coalesce('[col_a]', '[col_b]'), 'default'))

While this can be done in SQL, it is not currently possible to do this 
with the shapefiles, except possibly using the OGR driver.

* set a default action maybe like:    '[col|=skip]'

In this case, of "col" is null the we would skip the current MAPFILE 
block we are in. This might mean we need to track skip failures via a 
return code to determine if the higher level block also needs to skip. 
But using a mix of these two, you could "default" ANGLE to 0.0 for a 
LABEL or SYMBOL but "skip" it if the TEXT string or SYMBOL name are 
NULL. I think I can achieve this with a CLASS expression that is a NOP 
or a FILTER (! (expression)) but it seems to be more intuitive to 
control this closer to the use.

My use case for presenting this idea is that I am trying to assign 
SYMBOL name and symbol SIZE to Tiger POINTLM data. I have currently 
worked around this by modifying the code that adds the attribute columns 
to set reasonable defaults. It would have been much easier to only add 
values to the records I care about and setting defaults or actions like 
above. What made me think about this is the fact that we can set default 
values for substitution strings using METADATA.

Anyway some food for thought.

-Steve W


More information about the mapserver-dev mailing list