[mapserver-dev] SYMBOLTRANFORM for special symbols rendering
Brent Fraser
bfraser at geoanalytic.com
Mon Nov 28 11:19:04 EST 2011
Alan,
My imagining of how Vector field Rendering would work is that as the
user zooms in and out the symbols would remain more or less the same
size (except for any change due to a resampling of the grid values). It
would behave like GIS symbology (e.g. size in pixels), not CAD symbology
(size in meters), although I guess if SYMBOLSCALEDENOM were used you
could get symbol size based on scale.
So my question is why the need for SYMBOLTRANSFORM? In your case,
you want the length of the line to vary with the grid value, but not the
width (I might want the width of the arrowhead to vary as well; I hadn't
thought about it):
STYLE
SYMBOL "arrowbody" # the symbol name (a short line segment)
WIDTH 1 # constant "thickness" (according to doc)
SIZE [uv_length] # "height" of symbol; line length for this symbol
ANGLE [uv_angle] # angle of the arrowbody
END
and only the position (not the width or the length) of the arrowhead
changes to match the length of the arrowbody symbol:
STYLE
SYMBOLTRANSFORM arrowhead # why is this required?
SYMBOL "arrowhead" # a ">" symbol
ANGLE [uv_angle] # same angle as arrowbody
OFFSET [uv_length] 0 # ">" point is at the end of the arrowbody
SIZE 4 # constant height (width?) of ">"
END
What am I missing?
And I ran across
http://matplotlib.github.com/basemap/users/examples.html Have a look
near the bottom of the page for sample graphics of wind vectors and barbs.
Best Regards,
Brent Fraser
On 11/24/2011 11:57 AM, Alan Boudreault wrote:
> Mainly yes, but might be apply to any other cases. hmm.. I see the
> graphic properly in the rfc...
>
> http://mapserver.org/trunk/development/rfc/ms-rfc-78.html
>
> Alan
>
> On 11-11-24 12:46 PM, Brent Fraser wrote:
>> Alan,
>>
>> I'm assuming this is mainly for Vector Field Rendering? (I get a broken
>> link for the graphic in the RFC)
>>
>> Best Regards,
>> Brent Fraser
>>
>>
>> On 11/24/2011 9:25 AM, Alan Boudreault wrote:
>>> Hi devs,
>>>
>>> A while ago, it has been discussed about a new way to render a symbol,
>>> which in this case is an arrow. The need is to be able to draw the
>>> body arrow (a line) scaled depending of a value (ie, the magnitude in
>>> vector field) but to not scale the arrow head.
>>>
>>> Mike, Daniel and Thomas discussed this problem in Denver during FOSS4G
>>> and they came up with the concept of ARROWBODY and ARROWHEAD. Those
>>> concepts are essentially to determine what need to be scaled.
>>> Following a discussion this morning.. here's the approach we would
>>> like to use:
>>>
>>> * We define two symbols: the arrow body and the arrow head.
>>> * The arrow head symbol needs to have the ANCHORPOINT set to the head.
>>> * We define 2 styles: one for the body and the other for the head.
>>> * The two style would use a new option: SYMBOLTRANSFORM, which is to
>>> draw the symbol correctly (scalable of not).
>>>
>>> Mapfile example:
>>>
>>> SYMBOL
>>> NAME "arrowbody"
>>> TYPE vector
>>> FILLED true
>>> POINTS
>>> 0 0
>>> 1 0
>>> END
>>> END
>>>
>>> SYMBOL
>>> NAME "arrowhead"
>>> TYPE vector
>>> FILLED true
>>> ANCHORPOINT 0.25 0
>>> POINTS
>>> 0 0.25
>>> 0.25 0
>>> 0 -0.25
>>> END
>>> END
>>>
>>>
>>> # in the layer definition....
>>>
>>> STYLE
>>> SYMBOLTRANSFORM arrowbody
>>> WITDH 1
>>> SIZE [uv_length]
>>> ANGLE [uv_angle]
>>> END
>>> STYLE
>>> SYMBOLTRANSFORM arrowhead
>>> SYMBOL "arrowhead"
>>> ANGLE [uv_angle]
>>> OFFSET [uv_length] 0
>>> SIZE 4
>>> END
>>>
>>> In the arrowhead, we *NEED* to pass the length of the arrowbody (via
>>> OFFSET), since it will be used to determine where the arrow head
>>> should be positioned. the SYMBOLTRANSFORM arrowhead option would tell
>>> the symbol renderer TO NOT scaled the symbol in length. In this
>>> example, we use the terminology arrowbody/arrowhead.... but we are
>>> going to use generic terms to use that feature in other cases.
>>>
>>> I'm glad to hear your comments and suggestions about that approach!
>>>
>>> Regards,
>>> Alan
>>> _______________________________________________
>>> mapserver-dev mailing list
>>> mapserver-dev at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/mapserver-dev
>>>
>>
>
>
More information about the mapserver-dev
mailing list