[Geoserver-users] Setting Legend Options DPI with Raster

Hey everyone,

I’ve already posted this once, trying again to see if anyone has an answer. Is this the best place to post a question like this?

I’m having an issue with the legend image for my heat map layers not displaying correctly when I specify a DPI through the LEGEND_OPTIONS.

My request:

http://transbasesf.org/geoserver/transbase_v1/ows?TRANSPARENT=TRUE&VIEWPARAMS=timed%3AA&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&EXCEPTIONS=application%2Fvnd.ogc.se_xml&LAYER=vw_geoserver_switrs_col_time&STYLE=Heatmap&FORMAT=image%2Fpng&LEGEND_OPTIONS=fontName%3AGill%20Sans%20MT%3BfontSize%3A8%3Bdpi%3A660%3BfontAntiAliasing%3Atrue%3B"

Geoserver’s response:

<?xml version="1.0" encoding="UTF-8"?>

java.lang.IllegalStateException: It is not legal to have a RasterSymbolizer here

It is not legal to have a RasterSymbolizer here

If I remove DPI from my LEGEND_OPTIONS request Geoserver returns the correct legend icon.

Is this a bug or is it just not possible to specify a DPI with a raster layer?

Thanks,

Devan

Devan Morris
E: devan.morris@anonymised.com

Hi Devan,
can you please send us the full stack trace from the Geoserver log?

Mauro

···

2014-05-12 21:07 GMT+02:00 Morris, Devan (DPH) <Devan.Morris@anonymised.com>:

Hey everyone,

I’ve already posted this once, trying again to see if anyone has an answer. Is this the best place to post a question like this?

I’m having an issue with the legend image for my heat map layers not displaying correctly when I specify a DPI through the LEGEND_OPTIONS.

My request:

http://transbasesf.org/geoserver/transbase_v1/ows?TRANSPARENT=TRUE&VIEWPARAMS=timed%3AA&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&EXCEPTIONS=application%2Fvnd.ogc.se_xml&LAYER=vw_geoserver_switrs_col_time&STYLE=Heatmap&FORMAT=image%2Fpng&LEGEND_OPTIONS=fontName%3AGill%20Sans%20MT%3BfontSize%3A8%3Bdpi%3A660%3BfontAntiAliasing%3Atrue%3B%22

Geoserver’s response:

<?xml version="1.0" encoding="UTF-8"?>

java.lang.IllegalStateException: It is not legal to have a RasterSymbolizer here

It is not legal to have a RasterSymbolizer here

If I remove DPI from my LEGEND_OPTIONS request Geoserver returns the correct legend icon.

Is this a bug or is it just not possible to specify a DPI with a raster layer?

Thanks,

Devan

Devan Morris
E: devan.morris@anonymised.com


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-users mailing list
Geoserver-users@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

This is the message I have in the log.

2014-05-14 10:17:08,899 INFO [geoserver.wms] -

Request: getServiceInfo

2014-05-14 10:17:09,523 INFO [geoserver.wms] -

Request: getMap

Time =

Filter = null

Buffer = 0

Format = image/png8

Filters = null

SRS = EPSG:900913

Height = 861

Width = 717

Tiled = false

Palette = null

FeatureVersion = null

Styles = [StyleImpl[ name=Heatmap], StyleImpl[ name=Stacker]]

Layers = [org.geoserver.wms.MapLayerInfo@…6541…, org.geoserver.wms.MapLayerInfo@…6541…]

MaxFeatures = null

Crs = PROJCS[“WGS84 / Google Mercator”,

GEOGCS[“WGS 84”,

DATUM[“World Geodetic System 1984”,

SPHEROID[“WGS 84”, 6378137.0, 298.257223563, AUTHORITY[“EPSG”,“7030”]],

AUTHORITY[“EPSG”,“6326”]],

PRIMEM[“Greenwich”, 0.0, AUTHORITY[“EPSG”,“8901”]],

UNIT[“degree”, 0.017453292519943295],

AXIS[“Longitude”, EAST],

AXIS[“Latitude”, NORTH],

AUTHORITY[“EPSG”,“4326”]],

PROJECTION[“Mercator_1SP”],

PARAMETER[“semi_minor”, 6378137.0],

PARAMETER[“latitude_of_origin”, 0.0],

PARAMETER[“central_meridian”, 0.0],

PARAMETER[“scale_factor”, 1.0],

PARAMETER[“false_easting”, 0.0],

PARAMETER[“false_northing”, 0.0],

UNIT[“m”, 1.0],

AXIS[“x”, EAST],

AXIS[“y”, NORTH],

AUTHORITY[“EPSG”,“900913”]]

Bbox = ReferencedEnvelope[-1.3628036998260634E7 : -1.3624798725541366E7, 4546825.733687567 : 4550714.068606834]

Env = {}

Angle = 0.0

CQLFilter = null

Elevation =

FeatureId = null

StartIndex = null

ViewParams = [{TIMED=A}, {TIMED=A}]

RemoteOwsType = null

RemoteOwsURL = null

FormatOptions = {DPI=96}

BgColor = java.awt.Color[r=255,g=255,b=255]

Transparent = true

SldBody = null

Sld = null

SldVersion = null

ValidateSchema = false

TilesOrigin = null

Exceptions = SE_XML

Version = 1.1.1

Request = GetMap

Get = true

RawKvp = {BBOX=-1.3628036998260634E7,4546825.733687567,-1.3624798725541366E7,4550714.068606834, MAP_RESOLUTION=96, SERVICE=WMS, HEIGHT=861, REQUEST=GetMap, STYLES=Heatmap,Stacker, WIDTH=717, TRANSPARENT=true, VERSION=1.1.1, FORMAT=image/png8, FORMAT_OPTIONS=dpi:96, VIEWPARAMS=timed:A, LAYERS=transbase_v1:vw_geoserver_switrs_col_time,transbase_v1:vw_geoserver_switrs_col_time, SRS=EPSG:900913}

BaseUrl = http://transbasesf.org:80/geoserver/

RequestCharset = UTF-8

2014-05-14 10:17:09,804 INFO [geoserver.wms] -

Request: getServiceInfo

2014-05-14 10:17:09,804 ERROR [geoserver.ows] -

java.lang.IllegalStateException: It is not legal to have a RasterSymbolizer here

at org.geoserver.wms.legendgraphic.BufferedImageLegendGraphicBuilder.buildLegendGraphic(BufferedImageLegendGraphicBuilder.java:363)

at org.geoserver.wms.legendgraphic.PNGLegendOutputFormat.produceLegendGraphic(PNGLegendOutputFormat.java:40)

at org.geoserver.wms.legendgraphic.PNGLegendOutputFormat.produceLegendGraphic(PNGLegendOutputFormat.java:21)

at org.geoserver.wms.GetLegendGraphic.run(GetLegendGraphic.java:48)

at org.geoserver.wms.DefaultWebMapService.getLegendGraphic(DefaultWebMapService.java:357)

at sun.reflect.GeneratedMethodAccessor257.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319)

at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

at org.geoserver.kml.WebMapServiceKmlInterceptor.invoke(WebMapServiceKmlInterceptor.java:34)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

at org.geoserver.ows.util.RequestObjectLogger.invoke(RequestObjectLogger.java:54)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

at com.sun.proxy.$Proxy65.getLegendGraphic(Unknown Source)

at sun.reflect.GeneratedMethodAccessor242.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:774)

at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:272)

at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)

at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)

at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:27)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:74)

at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:45)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:49)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:53)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.geoserver.security.filter.GeoServerBasicAuthenticationFilter.doFilter(GeoServerBasicAuthenticationFilter.java:82)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)

at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)

at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:52)

at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)

at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)

at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)

at org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:134)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:75)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:48)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:47)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:43)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

···

Hi Devan,

can you please send us the full stack trace from the Geoserver log?

Mauro

2014-05-12 21:07 GMT+02:00 Morris, Devan (DPH) <Devan.Morris@…6494…>:

Hey everyone,

I’ve already posted this once, trying again to see if anyone has an answer. Is this the best place to post a question like this?

I’m having an issue with the legend image for my heat map layers not displaying correctly when I specify a DPI through the LEGEND_OPTIONS.

My request:

http://transbasesf.org/geoserver/transbase_v1/ows?TRANSPARENT=TRUE&VIEWPARAMS=timed%3AA&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&EXCEPTIONS=application%2Fvnd.ogc.se_xml&LAYER=vw_geoserver_switrs_col_time&STYLE=Heatmap&FORMAT=image%2Fpng&LEGEND_OPTIONS=fontName%3AGill%20Sans%20MT%3BfontSize%3A8%3Bdpi%3A660%3BfontAntiAliasing%3Atrue%3B%22

Geoserver’s response:

<?xml version="1.0" encoding="UTF-8"?>

java.lang.IllegalStateException: It is not legal to have a RasterSymbolizer here

It is not legal to have a RasterSymbolizer here

If I remove DPI from my LEGEND_OPTIONS request Geoserver returns the correct legend icon.

Is this a bug or is it just not possible to specify a DPI with a raster layer?

Thanks,

Devan

Devan Morris
E: devan.morris@…6494…


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

==

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK

for more information.

==

Dott. Mauro Bartolomeoli

@mauro_bart

Senior Software Engineer

GeoSolutions S.A.S.

Via Poggio alle Viti 1187

55054 Massarosa (LU)

Italy

phone: +39 0584 962313

fax: +39 0584 1660272

http://www.geo-solutions.it

http://twitter.com/geosolutions_it