I am busy setting up GeoServer for tiled WMS layers.
I am running Windows Server 2012, PostgeSQL 9.4, PostGIS 2.2, Tomcat 8.0.9,
Java JRE 1.8.0.65 and Geoserver 2.8 with the CSS Styling extension.
While I have got most of my layers and styling sorted and rendering at a
reasonable speed, I am having issues with the 1 overlay that draws parcel
outlines and labels them.
. Each parcel has a street number.
. Some parcels also have a name, in which case the name is displayed instead
of the street number (label created in view).
. In the syle sheet I set -gt-label-auto-wrap.
/Attempt 1:/ default labeling:
Multiple labels on parcels cut by tiles
/Attempt 2:/ Add: label-geometry: [centroid(geom)]
No labels on parcels where the centroid is close to tile boundary
/Attempt 3:/ Manually edit generated SLD, add <sld:VendorOption
name="partials">true</sld:VendorOption>
Great improvement. Short labels render over both tiles.
Longer labels (may or may not go onto multiple lines) sometimes only render
on 1 tile leaving part of the label missing.
The image below is a partial screen shoot using FireBug to show a tile
boundary in blue and the red numbers added manualy for explanation.
<http://osgeo-org.1560.x6.nabble.com/file/n5235216/geoserver_labeling.png>
1. Label should read: SIDMOR COUR*T*
2. Label should read: *K*ENHAR COURT
3. Label should read: MORTIM*ER* GARDE*NS*
4. Label should read: *T*WILLEY *G*ARDENS
5. The numbers 1, 2 & 3 render properly over 2 tiles. This is also the case
when cut vertically.
*Question 1:* Is there a solution to these labels only rendering on 1 tile?
/Attempt 4:/ Trying to get better label positions on pan-handle type
parcels, I added and pre-populated a second geometry column, "label_point"
using the following SQL:
UPDATE parcel
SET label_point =
CASE
WHEN ST_Contains(geom, ST_Centroid(geom)) THEN ST_Centroid(geom)
ELSE ST_PointOnSurface(geom)
END;
After much experimenting, and going as far as splitting the original
"parcel" layer into a "parcel_boundary" and "parcel_label" layer and
grouping them I have found huge speed differences between using
"label-geometry: [centroid(geom)]" and "label-geometry: [label_point]". The
first, which would seem like more processing for Geoserver, renders a full
screen of my map in < 2s. The second takes +- 45s to render a similar screen
of the map!
*Question 2:*
Why would supplying a point for the label take over 20x longer to render
than letting Geoserver calculate the centroid of a polygon?
--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Tiled-WMS-layer-labeling-speed-partial-labels-on-tile-tp5235216.html
Sent from the GeoServer - User mailing list archive at Nabble.com.