Re-thinking RFC 6
Daniel Morissette
dmorissette at MAPGEARS.COM
Fri Jun 15 09:05:02 EDT 2007
Interesting idea. I think I like it, but I'm not sure if I might not be
missing some possible drawbacks of it.
Back to RFC-6 itself, one problem I've always had with it is that doing
linear interoplation of RGB values between (r1, g1, b1) and (r2, g2, b2)
doesn't necessarily give a good looking color ramp. Others with more
experience dealing with colors than me could better comment, but I think
you'd almost need a color lookup table, or have the ability to specify
multiple r,g,b points that define a path in the RGB space instead of
just the start and end point.
Daniel
Steve Lime wrote:
> I agree on the naming. Will have to ponder that. I'd like an syntax that would accommodate colors and numbers in the same way:
>
> PARAMETERLIMITS #FFFFFF #FF0000 or PARAMETERRANGE 1 10
>
> (we can handle that in mapfile.c) and then
>
> ITEMLIMITS 1000.0 50000.0
>
> or something like that.
>
> The machinery is very similar to that of RFC 19, you just use a msBindLayerToRange function that works just like msBindLayerToShape (same parameters even). Most of the plumbing is in maputil.c already, as is the original range code Bill Binko wrote.
>
> Steve
>
>>>> Frank Warmerdam <warmerdam at POBOX.COM> 06/14/07 11:18 PM >>>
> Steve Lime wrote:
>> Hi guys: As the deadline for RFC's approaches I wanted to float a change to RFC 6 that might be doable by 5.0. I've not spent time updating the RFC yet. The idea would be to bind properties to ranges much like RFC 19. We'd extend the range concept to colors, sizes and angles. So COLORRANGE would become RANGE. RANGEs would live at the layer level and would be referenced by name so you could have several.
>>
>> A range would be defined as:
>>
>> typedef struct {
>> char *name;
>> attributeBindingObj item; /* holds name and index */
>> colorObj mincolor, maxcolor; /* only colorObj's and numbers make sense */
>> double minnumber, maxnumber;
>> double minvalue, maxvalue;
>> int intervals;
>> int method; /* should be enum - MS_RANGE_METHOD */
>> } rangeObj;
>>
>> and a layer would have an array (fixed size, might be ok, should need more than a couple, or dynamic) of these.
>>
>> Styles properties (color, outlinecolor, size, angle) could then reference these by name.
>>
>> e.g.
>>
>> LAYER
>> NAME 'myLayer'
>> ...
>> RANGE
>> NAME 'sizeRange'
>> ITEM 'sizeitem'
>> MINNUMBER 1
>> MAXNUMBER 10
>> MINVALUE 1000.0
>> MAXVALUE 500000.0
>> END
>
> Steve,
>
> I sort of like this approach though it seems like substantial
> machinery might be needed to support it.
>
> I also really think that you need to make it more clear what are
> input values and what are output values. Perhaps min_in_val,
> max_in_val, min_out_scalar, max_out_scalar. For me "value" and
> "number" are too general to work out which is input and output
> of the function.
>
> Best regards,
--
Daniel Morissette
http://www.mapgears.com/
More information about the mapserver-dev
mailing list