[mapserver-users] Re: ANGLE FOLLOW and Label Offset (v. 5.6.6)
Brent Fraser
bfraser at geoanalytic.com
Tue Jun 7 06:55:14 PDT 2011
Thomas,
Yes, I've been trying to come up with good map file syntax to
indicate labeling of the transformed geometry. Currently mapserver allows:
- transformed original geometry (buffer, difference)
- augmented original geometry (bbox, start/end, vertices)
- rendered label geometry (labelpoint, labelpoly)
but it doesn't label transformed geometry, only original geometry. The
main problem (from a user interface perspective) is how to relate
transformed geometry to the label specification.
One solution is to allow a LABEL object within a STYLE object:
CLASS
NAME 'Streams'
STYLE
GEOMTRANSFORM (buffer([shape], 5))
LABEL
usual label settings
END # Label
END # Style
but that's a little strange as STYLE objects are currently allowed
within LABEL objects.
Another solution is to have "named" geometry and reference it in the
LABEL object (and keep the existing CLASS/STYLE/LABEL structure):
CLASS
NAME 'Streams'
STYLE
GEOMTRANSFORM my_label_shape = (buffer([shape], 5))
END # Style
LABEL
usual label settings
GEOMETRY my_label_shape
END # Label
And I'm sure there are other (and hopefully better) solutions.
Best Regards,
Brent Fraser
On 6/6/2011 11:02 AM, thomas bonfort wrote:
> Yes, the resulting shape seems like a nice candidate for offseting
> labels, but the problem with buffer is you will have more difficulty
> in deciding what is to the left from what is to the right of the line.
> We'd also have to make sure that the buffer operation is not too
> costly on cpu cycles.
> Anyways, until geomtransform is not applied at the layer level, there
> is no way to use this method as the label does not operate on the
> transformed geometry.
>
> On Mon, Jun 6, 2011 at 17:30, Brent Fraser<bfraser at geoanalytic.com> wrote:
>> Steve,
>>
>> I think just buffering the line would apply a type of smoothing (see
>> attached image). Using the resulting buffer line (or perhaps doing some
>> simple line smoothing on it) for labeling would be good enough.
>>
>> Best Regards,
>> Brent Fraser
>>
>>
>> On 6/6/2011 9:04 AM, Stephen Woodbridge wrote:
>>> Duh! you are correct, I always forget this point until I after my second
>>> cup of coffee has kicked in :)
>>>
>>> That article looks very interesting, I have to read up on that.
>>>
>>> In a past career in computer aided design and manufacturing, we used the
>>> idea of a rolling ball offset because it modeled a milling machine. The
>>> rolling ball offset is defined as the curve traced by the center of a ball
>>> of a given radius as you roll it along a curve. The circumference of the
>>> ball can not cross over the original curve so for tight "S" curves if the
>>> diameter of the ball is larger than the gap in the "S" then the ball does
>>> not enter the gap but floats over it. This same concept would make for well
>>> behaved and good looking labels along tight twisty paths like rivers and
>>> roads.
>>>
>>> Another idea for smoothing out curves for labeling might be to apply an N
>>> point moving average and allow that to be the label path. I don't think this
>>> has been mentioned as an option in the past.
>>>
>>> -Steve W
>>>
>>> On 6/6/2011 10:20 AM, thomas bonfort wrote:
>>>> There are two problems with the solution you propose:
>>>> - if you offset the geometry in postgis, the distance of the offset
>>>> will be in geographical units, i.e. it will not give correct results
>>>> at all scales when rendered with mapserver (what you basically want is
>>>> to offset the line by a number of pixels roughly equal to the size of
>>>> the font used for labelling)
>>>> - angle follow on offset line should probably be done on a
>>>> simplified/smoothed geometry. see
>>>> http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.24.6970 .
>>>> Ideally someone will want the feature badly enough to fund it :)
>>>>
>>>> --
>>>> thomas
>>>>
>>>>
>>>>
>>>> On Mon, Jun 6, 2011 at 16:02, Stephen Woodbridge
>>>> <woodbri at swoodbridge.com> wrote:
>>>>> There was some recent discussion on the dev list about potentially using
>>>>> the
>>>>> GEOMTRANSFORM to do something like a single sided offset then using that
>>>>> to
>>>>> apply the label to. BUT I do not think that has been implemented yet in
>>>>> mapserver.
>>>>>
>>>>> Google for "mapserver geomtransform" also look at "geoprocessing" for
>>>>> some
>>>>> other ideas.
>>>>>
>>>>> Anyway, you might be able to do what you want if you:
>>>>>
>>>>> 1. import your data into PostGIS
>>>>> 2. create offset geometry in another table
>>>>> 3. export that table to a shapefile
>>>>> 4. then label that as an annotation layer so you do not draw the
>>>>> geometry
>>>>> only the label and use the original data to draw the grometry ie: two
>>>>> layers.
>>>>>
>>>>> I have not tried this, but it might solve your problem.
>>>>>
>>>>> -Steve W
>>>>>
>>>>> On 6/6/2011 9:48 AM, uvg wrote:
>>>>>> Thank you, Thomas.
>>>>>> Are there any workarounds for this problem?
>>>>>> Is there 'best practices' for the problem?
>>>>>> Maybe unvisible layer or other?
>>>>>> 06.06.2011, 17:35, "thomas bonfort [via OSGeo.org]"<[hidden email]
>>>>>> </user/SendEmail.jtp?type=node&node=6445194&i=0>>:
>>>>>>
>>>>>> The status has not changed: label follow with offset is not
>>>>>> supported.
>>>>>>
>>>>>> regards,
>>>>>> thomas
>>>>>>
>>>>>> On Mon, Jun 6, 2011 at 15:33, uvg<[hidden email]> wrote:
>>>>>>
>>>>>>> Hi all!
>>>>>>> Sorry for my bad English.
>>>>>>>
>>>>>>> I am trying to achieve is a label that follows the rivers that is
>>>>>> also
>>>>>>> OFFSET so that
>>>>>>> the label does not 'above' on the line for the river.
>>>>>>>
>>>>>>> Sample code of mapfile:
>>>>>>>
>>>>>>> LABEL
>>>>>>> COLOR 0 40 255
>>>>>>> FONT "arial-italic"
>>>>>>> TYPE truetype
>>>>>>> SIZE 7
>>>>>>> OFFSET 5 0
>>>>>>> ANGLE FOLLOW
>>>>>>> POSITION LC
>>>>>>> FORCE true
>>>>>>> PARTIALS FALSE
>>>>>>>
>>>>>>> END
>>>>>>>
>>>>>>> "OFFSET" does not work.
>>>>>>> How can I offset a label?
>>>>>>>
>>>>>>> I found a message posted for a long time:
>>>>>>> click here.
>>>>>>
>>>>>> View this message in context: Re: ANGLE FOLLOW and Label Offset (v.
>>>>>> 5.6.6)
>>>>>>
>>>>>>
>>>>>> <http://osgeo-org.1803224.n2.nabble.com/ANGLE-FOLLOW-and-Label-Offset-v-5-6-6-tp6445138p6445194.html>
>>>>>> Sent from the Mapserver - User mailing list archive
>>>>>> <http://osgeo-org.1803224.n2.nabble.com/Mapserver-User-f1969211.html>
>>>>>> at
>>>>>> Nabble.com.
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> mapserver-users mailing list
>>>>>> mapserver-users at lists.osgeo.org
>>>>>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>>>> _______________________________________________
>>>>> mapserver-users mailing list
>>>>> mapserver-users at lists.osgeo.org
>>>>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>>>>
>>> _______________________________________________
>>> mapserver-users mailing list
>>> mapserver-users at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>>
>> _______________________________________________
>> mapserver-users mailing list
>> mapserver-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>
>>
More information about the MapServer-users
mailing list