[Geoserver-devel] DefaultLabelCache concerns (jumping labels and tiled rendering)

Hi all,
today I was investigating a slowness report from Jody about the
streaming renderer, and found out than once I removed the translucency
effects in the style, that usually have quite a negative effect on performance,
the major performance offender was the default label cache.

By profiling I noticed that the default label cache does polygon clipping
in order to determine the visible parts of a polygon in the current visible
window, to determine then which part is the largest and to place the
label inside of it.

This means that label do change position when polygons are not totally
inside the visible area.

This is in my opinion quite a problem because it will prevent us from using
tiled rendering a la Google maps, which is something I believe is in the
interest of Geoserver at least.

What do you think? I understand the intent of trying to show a readable label
for non fully visible polygons, but there should at least be a switch to disable
this functionality in my opinion.

Cheers
Andrea

Yes, I'd love to be able to switch this behavior, our current demo stuff with tiling definitely suffers from too many labels. See: http://geo.openplans.org/cholmes/tiger.html

Would be great if we could have it as a config option in geoserver, or even a user defined value, so they could decide if they want a style geared for tiling or not. But the first step would definitely be to make an SLD vendor param option.

Chris

Andrea Aime wrote:

Hi all,
today I was investigating a slowness report from Jody about the
streaming renderer, and found out than once I removed the translucency
effects in the style, that usually have quite a negative effect on performance,
the major performance offender was the default label cache.

By profiling I noticed that the default label cache does polygon clipping
in order to determine the visible parts of a polygon in the current visible
window, to determine then which part is the largest and to place the
label inside of it.

This means that label do change position when polygons are not totally
inside the visible area.

This is in my opinion quite a problem because it will prevent us from using
tiled rendering a la Google maps, which is something I believe is in the
interest of Geoserver at least.

What do you think? I understand the intent of trying to show a readable label
for non fully visible polygons, but there should at least be a switch to disable
this functionality in my opinion.

Cheers
Andrea

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

!DSPAM:1003,44d4bf0368491971556521!

--
Chris Holmes
The Open Planning Project
http://topp.openplans.org

Chris Holmes ha scritto:

Yes, I'd love to be able to switch this behavior, our current demo stuff with tiling definitely suffers from too many labels. See: http://geo.openplans.org/cholmes/tiger.html

By looking at the demo you can see yet another problem: the area renderer should not be
limited to the current tile, but be bigger enought to host every label or symbol that happen
to fall in the current tile, even if the geometry attached to it is outside the current tile.

This is not trivial, because for labels we need an estimate of the longest label, and for
the rest the size of the biggest symbol used for point rendering/line rendering.
Also line width should be taken into consideration, since it could be in some cases
big enough to be visibly "cut" by the tile boundary.

Cheers
Andrea

PS. boys, the version with the satellite image backdrop should really enjoy what's
sitting in the 1.4.x-wcs branch :wink: