Blaise

Just a quick reply to myself and you!

It seems (after checking thru Bugzilla - before submitting a bug) that the guys have added the styleObj set angle option in the CVS version (http://mapserver.gis.umn.edu/bugs/show_bug.cgi?id=1786) bug 1786. Haven't tried it yet - but if thats the case then all my problems are solved! Thanks guys!

Stu

Stuart Eve wrote:
Blaise,

Is it possible - do you think - to create these fields on the fly? I don;t really want to have to require people to create a 'fake' point shapefile - just to use these symbols - I would prefer somehow to make a new point layer from the old one (whose source isn't always a shapefile) - and then perhaps dynamically add those values to it. The Mapscript API says that the 'values' array is read-only? is it possible to add new fields to the attribute table - especially if I have created the layer using ms_newLayerObj?

If not then I will definitely use your suggestion - and perhaps submit a bug report asking why the 'angle' property isn;t available - even tho in the API it says it should be!

Stu

Blaise wrote:
Stu
I've got symbols rotated :
mapserver 4.8.3,
point shapefile:"rotlabel", dbf with 2 fields : "ID" and "rotation"
field rotation is numeric, 3 digits, no decimal (0->359)
Layer definition in mapfile :
LAYER
  NAME rotlabel
  TYPE POINT
  STATUS ON
  DATA rotlabel
  CLASS
    NAME "rotlabel"
    STYLE
      SYMBOL 'triangle'
      ANGLEITEM "rotation"
      SIZE 15
      COLOR 255 0 255
    END
  END
END
Triangle definition in symbol file (symbols.sym) :
Symbol
Name 'triangle'
Type VECTOR
Filled TRUE
Points
0 1
.5 0
1 1
0 1
END
END
No on-the-fly label drawing, just basic layer display. When updating data in the "rotation" field of the dbf, triangles are rotating... One strange thing is with angle 90 and 180 : triangles don't display. 89, 91, 179, 181 are ok, but not 90 and 180. 270 is ok as well. You should easily custom the triangle symbol into whatever you want (arrow or else). Better check that your symbol is displayed for any angle (0->359). There must be some kind of bug somewhere. Maybe you'll help discovering it.
I hope this is what you were looking for.
Regards
Blaise


Le Samedi 27 Mai 2006 17:47, Stuart Eve a écrit :
Blaise

I am working with shapefiles - but am going to need to do this with all
different types of layers (trying to abstract it out). I have just added
the 'angle' field to the dbf to try it out and I am still getting the
same error.

It seems that the styleObj thinks it doesn't have the member of 'angle'
(or actualy 'angleitem') even though in my mapfile (which I
automatically output by using $map->save) it has written it like this:

 STYLE
        ANGLE 360
        COLOR 0 0 0
        SIZE 8
        SYMBOL "rot_tri"
  END

I am now trying to go through the process of automatically creating the
rotated symbol on the fly (but the logic of it makes my head hurt!).

Thanks for your help so far!

Stu

Blaise wrote:
Hi Stu
What kind of layer do you use for your symbols, point or annotation ? I assume it's a shapefile (*.shp, *.shx, *.dbf) isn't it ? I don't remember exactly how annotation layers work but it must be the same as point. With
point layers, you have to have an "angle" field (numeric, 3 digits
without decimal, I believe, not sure) in your dbf file, or maybe better
"ANGLE" to be able to set the angle. Do you have this field in the dbf
and if not can you try adding it ?
And do you have the right angle instructions in the layer section of your
mapfile ? If not sure, post your mapfile layer section.
Bravo for the work so far.
Blaise

Le Samedi 27 Mai 2006 16:58, Stuart Eve a écrit :
Hi Blaise

I have managed to get quite a long way down the road of extracting
points and placing them, etc.- and I think its all going to work -
however I have just been stumped by what seems to be to be a bug.

I have managed to set up classes for each of the points that I wish to
draw - and now want to set their styles so that the symbol (a VECTOR)
symbol is rotated to the angle (which I have got from my geometry
function). However, whenever I try to access styleObj->set("angle",45) it says that 'angle' doesn't exist in that object. However, I can dump
out the mapfile and it is there set as 360.

Any ideas whats going on?

Thanks

Stu

Blaise wrote:
Stu
I don't know what output you want exactly, but yes, using mapscript,
you can easily put an arrow on each segment of a polyline with a loop
something like :
for each polyline
 for each segment of polyline
  get start and stop point of segment
  calculate middle point of segment and angle
  create new annotation arrow

The geometry calculation is pretty straight forward, it's basic 2d
geometry. Ask more if you need help on the mapscript functions and/or
the geometry calculation.
But maybe someone else on this list has got a better/different idea.
Regards
Blaise

Le Vendredi 26 Mai 2006 16:41, vous avez écrit :
Blaise

Thanks for the reply. I presume that we could automatically create a bunch of points along the line using mapscript or something - but then how would we make sure that it was always at right angles to the line?
I guess we would have to do some fancy geometry to figure out what
angle that section of line was... sounds hard!

Mind you it may be the only way - thanks for your help!

Stu

Blaise wrote:
Le Vendredi 26 Mai 2006 16:23, Stuart Eve a écrit :
Dear All,

We have been trying to get symbols to rotate along a line in
mapserver (4.8.3). Basically we want to get a small triangle
pointing either 45 degrees or 270 degrees to a line.

We firstly tried using PIXMAPs - but I don;t think its possible to rotate these at all (is that true?) plus they do not seem to follow
the line and always just point 'up'.

So we then tried using some truetype symbols - these follow the line - but seem to be rather erratic as to which way they point. We are using a small triangle from the webdings.ttf set - and sometimes it will point up and sometimes it will point down (but even if its on
the same section of the line).

Does anyone have any pointers?

Thanks in advance

Stu
Hi Stu
Well, not sure about that, but sometimes it's hard to have the
symbols exactly where you want. Perhaps you could create a special
layer (point or annotation) to deal with your triangles. It should
then be easier to manipulate. Of course it's extra data, extra code,
extra mapfile parsing and so on but you'll have your symbols where
you want and well rotated. Regards
Blaise







--
Stuart Eve
L - P : Archaeology
[EMAIL PROTECTED]

Reply via email to