[mapserver-users] arrow head doesn't draw at the end

luis peinado luis.peinado at geodata.es
Wed Sep 28 04:04:47 EDT 2011


Hi, just trying to help.
I used some trick with arrows than maybe can help you with some variation.
I use mapserver-5.X and the way it worked for me was a LINE type layer using
a normal class (continous line) with an OVERLAYSYMBOL, using  a ">"
character.
Maybe changin some parameters like GAP may be useful to you.

This is my class on a TYPE LINE layer
CLASS
NAME "capa_tub"
 SYMBOL "continous"
SIZE 2
COLOR 6 79 167
 OVERLAYSYMBOL "arrow"
OVERLAYSIZE 30
OVERLAYCOLOR 6 79 167
END

And my continous and arrow are

SYMBOL
  NAME "arrow"
  TYPE TRUETYPE
  FONT arial
  CHARACTER '>'
  FILLED true
  ANTIALIAS true
  GAP -100
END

SYMBOL
NAME "continous"
TYPE ELLIPSE
POINTS 1 1 END
END

Hope it helps.
Lluís

2011/9/27 Puneet Kishor <punk.kish at gmail.com>

>
> On Sep 27, 2011, at 2:18 AM, Havard Tveite wrote:
>
> > Have you seen:
> >
> >
> http://mapserver.org/mapfile/symbology/construction.html#changing-the-center-of-a-point-symbol
>
>
> Yup, seen and read it from end to end until my eyes glazed. Perhaps it is
> clear as crystal to the rest of the world, but I can't fathom anything there
> applicable to me. I am facing four problems --
>
> 1. As I mentioned below, per the docs, I am supposed to be able to declare
> "ANGLE AUTO" in my STYLE definition. That simply does not work for me. I
> *have* to declare the angle the same as the angle of the stem of the arrow
> "ANGLE [az]" in order to get arrow heads headed in the same direction as the
> arrow stems.
>
> 2. From the docs on GEOMTRANSFORM, "end: produces the last point of the
> geometry. When used with ANGLE AUTO, it can for instance be used to render
> an arrowhead." Well, no... it is *not* producing the *last point of the
> geometry* as I understand it. Instead, it is producing the middle point of
> the geometry. And it sure as as I can see is not working with ANGLE AUTO
> (see #1 above).
>
> 3. I have tried several variations on my arrow head to try shift its
> center, but I am failing to translate the information in the above document
> to be able to do it correctly.
>
> 4. Perhaps most important: the length of the arrow is varying based on
> [rate]. In other words, I want only the stem to be shorter or longer, but
> the arrow head to be the same size, and to be at the "end" of the stem
> always. In fact, there are instances in which [rate] could be equal to zero.
> In those instances I don't want any arrow to be drawn at all.
>
> *** In other words, I want an arrow stem to be as long as the varying
> [rate], and if the stem has a length greater than zero then and only then do
> I want an arrow head at the end of the stem pointing in the same direction
> as the stem. ***
>
> I even tried using a truetype font symbol, but I get no image at all but no
> error as well.
>
> I even tried using a SYMBOL of TYPE pixmap pointing to an image of an
> arrow. I realize that if I could make that work, it would still be
> unsatisfactory because as MapServer would scale my arrow image, it would
> make the attached arrow head also larger, and that would look ugly. In any
> case, I couldn't get that to work as well... no image at all, but no error
> as well.
>
> Could be my compilation of MapServer was buggy, but I didn't see any
> compilation time errors, and other than the above oddities, it works quite
> well.
>
> $./mapserv -v
> MapServer version 6.0.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG SUPPORTS=PROJ
> SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=WMS_SERVER
> SUPPORTS=WMS_CLIENT SUPPORTS=GEOS INPUT=POSTGIS INPUT=GDAL INPUT=SHAPEFILE
>
> I would love to know if my *** objective *** above can be accomplished with
> MapServer. If not, I would look at other workaround. I am currently
> rendering arrows using OpenLayers vector layer... it works quite well, but
> is slow... MapServer is much faster, and could be cached, hence my desire to
> use MapServer.
>
> Thanks.
>
>
> >
> > Håvard Tveite
> >
> > On 9/27/2011 4:12 AM, Puneet Kishor wrote:
> >> My arrows look like so -->-- instead of ---->  with declarations like so
> >>
> >>     SYMBOL
> >>         NAME "vert-line"
> >>         TYPE vector
> >>         POINTS
> >>             0 1
> >>             0 0
> >>         END
> >>     END
> >>
> >>      SYMBOL
> >>         NAME "up"
> >>         TYPE vector
> >>         POINTS
> >>             0 1
> >>             0.5 0
> >>             1 1
> >>         END
> >>     END
> >>
> >>     CLASS
> >>         STYLE
> >>             SYMBOL 'vert-line'
> >>             ANGLE [az]
> >>             SIZE [rate]
> >>             COLOR 0 0 0
> >>             WIDTH 1
> >>         END
> >>         STYLE
> >>             SYMBOL "up"
> >>             ANGLE [az]
> >>             SIZE 5
> >>             GEOMTRANSFORM "end"
> >>             COLOR 0 0 0
> >>         END
> >>     END
> >>
> >> But, at least the arrow heads are aligned correctly. Because, if I use
> "ANGLE auto" as prescribed in the docs instead of "ANGLE [az]" as shown
> above, my arrows draw like so --^--. The heads are always pointed up, and
> are in the middle.
> >>
> >> Suggestions?
>
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>



-- 

*Lluís Peinado*

***Geodata Sistemas,SL.*

luis.peinado at geodata.es



T. 933 035 367 (ext. 21)

F. 933 080 071
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20110928/0f2ee997/attachment.html


More information about the mapserver-users mailing list