Hi,
> What you are experiencing is that for polygons, the anchor
> point used for labelling is the centroid of the visible portion
> of the polygon. So for each small tile image that covers your
> polygon, a new anchor point is computed and the label is drawn.
There must be something obvious that I cannot see, but why not
to have an option to use the real centroid of the polygon as anchor
point instead of the centroid of the visible portion when the goal
is to create tiles? When the whole area gets rendered each polygon
would be labeled exactly once. Anchor point would always be exactly
the same so I guess that rendered partial labels could be set side by side
without any visible seams. Handling the conflicts with overlapping labels
should be set to a stupid mode so it would not ever move the labels but
only decides whether to render the label or not. Probably this is the place
there this plan fails. Half of a label may get rendered into one tile but in
another tile there could be an overlap and the missing part of the label
would not be rendered ever.
-Jukka Rahkonen-
Edward Mac Gillavry wrote:
Hi Akos,
Before all attention goes towards the other thread you started, I would like to
address this question separately though suggestions have already been provided
in the other thread. When others come to the mailing list archives at a future
time, they then don't have to search too far for pointers either, hopefully.
What you are experiencing is that for polygons, the anchor point used for
labelling is the centroid of the visible portion of the polygon. So for each
small tile image that covers your polygon, a new anchor point is computed and
the label is drawn.
One course of action to work around this has already been suggested by Al Vigil:
> One way to get around this duplication problem when labeling polygons is to
> create a point file of polygon center points and style the points so they
> are transparent, but are labeled with the name of the polygon.
Thus, there's only one spot where your area label will be drawn instead of
having it drawn on each tile that covers the geographic area. The downside of
this approach can be, that the very spot you defined has already been taken by
another label that has higher priority, for example by a country name or region
name. You could then use a desktop GIS to load your PostGIS layer and manually
reposition these points.
The other course of action has already been suggested by David Winslow:
> GeoWebCache can help by generating oversized tiles and splitting them up into
> 256px square tiles for actual serving.
Sticking with your current SLD, GeoWebCache requests are larger image from
GeoServer, so there will most likely be less images that cover the geographic
area. Thus, the label with have less repetition anyway. Also, as the anchor
point used for labelling is the centroid of the visible portion of the polygon
in the larger image there is a slight irregularity introduced in the anchor
point calculation. Since tile borders hardly ever coincide with geographic
borders, there is less chance your label anchor points from different layers
(town layer, region layer, country layer) will overlap.
All in all, I suggest to use a tile rendering engine (GeoWebCache, MapProxy,
TileCache) anyway, instead of requesting small image from GeoServer and have
the tile rendering engine do the tile slicing afterwards. You will have send
fewer requests to GeoServer (1 large image instead of multiple small images),
so this speeds up the overall tile cache creation time. In a second stage you
have to try for your self whether you do a precomputation of the label anchor
points or have GeoServer compute the anchor point at the centroid of the
visible portion of the polygon on the fly. Also this trade-off can vary across
zoom levels.
Kind regards,
Edward
> Date: Tue, 14 Aug 2012 20:49:06 +0200
> From: [email protected]<mailto:[email protected]>
> To:
> [email protected]<mailto:[email protected]>
> Subject: [Geoserver-users] polygon label repeated for each tile
>
> Hi,
>
> I'm trying to use polygon labeling with SLD to label cities using an OSM
> PostGIS database. I tried to use the 'name' attribute of admin_level = 8
> administrative boundaries from the OSM database.
>
> this seems to work fine, but there is a problem. as geoserver generates
> the various tiles for serving via WMS, the label is generated for each
> tile that the polygon is shown on. for cities that span multiple tiles
> on a certain zoom level, this means that the name of the city is
> repeated as many times as there are tiles spanning the polygon.
>
> is there a way to prevent this from happening?
>
> best regards,
>
>
> Akos
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> Geoserver-users mailing list
> [email protected]<mailto:[email protected]>
> https://lists.sourceforge.net/lists/listinfo/geoserver-users
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Geoserver-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users