I got one more suggestion to consider:

  4) Count the attributes and if event consider the last attribute as the
default value.



This is a bit tricky Tom as the recode function is not defined by us - it
is part of the symbology encoding 1.1 specification (so it is a mandatory
function we must implement to be SE 1.1 compatible).

Here is a quote from http://www.opengeospatial.org/standards/se

*Recoding is defined by the Recode element:*


*<xsd:element name="Recode" type="se:RecodeType"
substitutionGroup="se:Function"/>*
*<xsd:complexType name="RecodeType">*
*  <xsd:complexContent>*
*    <xsd:extension base="se:FunctionType">*
*      <xsd:sequence>*
*        <xsd:element ref="se:LookupValue"/>*
*        <xsd:element ref="se:MapItem" maxOccurs="unbounded"/>*
*      </xsd:sequence>*
*    </xsd:extension>*
*  </xsd:complexContent>*
*  </xsd:complexType>*
*</xsd:complexType>*

*<xsd:element name="MapItem" type="se:MapItemType"
substitutionGroup="ogc:expression"/>*
*<xsd:complexType name="MapItemType">*
*  <xsd:complexContent>*
*    <xsd:extension base="ogc:ExpressionType">*
*      <xsd:sequence>*
*        <xsd:element ref="se:Data"/>*
*        <xsd:element ref="se:Value"/>*
*      </xsd:sequence>*
*    </xsd:extension>*
*  </xsd:complexContent>*
*</xsd:complexTyp:>*

*This function recodes values from a property or expression into
corresponding values of*
*arbitrary type. The comparisons are performed checking for identical
values.*


I also wonder if we are missing a point, these functions each have an
optional fallback value (supposed to be used if the function is not
available on the engine doing the rendering). We could hijack this fallback
value:

<SvgParameter name="stroke-width">
  <Categorize fallbackValue="1">
    <LookupValue>
      <ogc:PropertyName>vehiclesPerHour</ogc:PropertyName>
    </LookupValue>
    <Value>1</Value><Threshold>5000</Threshold>
    <Value>2</Value><Threshold>15000</Threshold>
    <Value>3</Value><Threshold>40000</Threshold>
    <Value>4</Value><Threshold>75000</Threshold>
    <Value>5</Value>
  </Categorize>
</SvgParameter>




--
Jody Garnett

On 14 October 2016 at 17:05, Tom S <tom-sourcefo...@fatsheepfarm.com> wrote:

> While I love the Recode function, there is one problem with it. There is
> no (obvious) way to define a value to use if none of the 'data' items
> matches the 'lookupValue', and the current structure doesn't lend itself
> to adding one.  I can see three potential ways to solve this
>
> 1) Change the definition of the 'data' element to be compared using
> Regular Expression syntax to the lookupValue, or
>
> 2) Add a attribute to the Function element called something like
> 'default'.  If no match is found in the data elements, use the value it
> specifies as the content.
>
> 3) Define a special value/position for the data element that would be
> treated as the default if found.  For example, if the last data item in
> the list was the literal value 'default' then use if no other earlier
> match.
>
> The first item is likely too large a change to current/expected
> behavior, so at best I can see this as a new 'RecodeRegEx' function or
> similar.
>
> The second item is the one I like best, but I don't know if the
> applicable standard would allow (of could be changed to allow)
> attributes for the Function element.
>
> The third option is likely the easiest, but I don't particularly like
> special cases of this nature - too easy to cause unexpected behaviors.
>
>
> So does anyone else have similar thoughts, and/or other ideas on how to
> deal with this?
>
>
>
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> _______________________________________________
> Geoserver-users mailing list
> Geoserver-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geoserver-users
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to