I have potentially found a bug in the transform chaining process driven by SLD style.
When trying to chain gs:RasterAsPointCollection with gs:BarnesSurface, I get the error:
Failed to evaluate the process function, error is: Parameter data is missing but has min multiplicity > 0
I join the SLD used on my raster layer which causes this error.
On Fri, Jul 19, 2013 at 11:42 AM, Jule M <jule.thales@anonymised.com> wrote:
Hi,
I have potentially found a bug in the transform chaining process driven by
SLD style.
When trying to chain gs:RasterAsPointCollection with gs:BarnesSurface, I
get the error:
Failed to evaluate the process function, error is: Parameter data is
missing but has min multiplicity > 0
I join the SLD used on my raster layer which causes this error.
Someone can confirm it is a bug?
I cannot confirm the precise bug, but the rendering code was not designed
from the beginning to
allow chaining transforms, and while some combinations do work, many do not.
Please open a ticket on jira.codehaus.org (if you don't have an account
register on xircles.codehaus.org).
If you can develop in java I can point you to the sources and you can debug
the issue from there,
or you can look at geoserver.org, there is a commercial support link
pointing to companies
that can do the work for you.
I cannot confirm the precise bug, but the rendering code was not designed
from the beginning to
allow chaining transforms, and while some combinations do work, many do
not.
Please open a ticket on jira.codehaus.org (if you don't have an account
register on xircles.codehaus.org).
Ok, I will open one.
If you can develop in java I can point you to the sources and you can debug
the issue from there
I can develop in java and I want to bring my little contribution to the
community (if I can...). Can you bring me some light on the render
transform process and architecture?
Actually I've already downloaded sources and started debugging GeoServer
but I am a little confused by SLD loading and where the transform data
input is really set. Is there some developer document that explains this
architecture with all factory process and details interfaces?
Hmm... that article says chaining, but in fact in that example there is no
chaining happening
Please open a ticket on jira.codehaus.org (if you don't have an account
register on xircles.codehaus.org).
Ok, I will open one.
If you can develop in java I can point you to the sources and you can
debug the issue from there
I can develop in java and I want to bring my little contribution to the
community (if I can...). Can you bring me some light on the render
transform process and architecture?
Actually I've already downloaded sources and started debugging GeoServer
but I am a little confused by SLD loading and where the transform data
input is really set. Is there some developer document that explains this
architecture with all factory process and details interfaces?
You have to look into the StreamingRenderer, render module, in GeoTools,
there should be a "applyRenderingTransformation" method.
There is no developer docs for this, all developers around here did learn
reading the sources.
You have to look into the StreamingRenderer, render module, in GeoTools,
there should be a "applyRenderingTransformation" method.
Ok, for my knowledge of all rendering process of GeoTools, that is to say
near zero, I can't figure out alone how to patch this issue.
It seems that in my particular case calling
tx.invertGridGeometry(renderingQuery, gridGeometry) which
call evaluateInputs(null) have the disease of trying to process the
RasterAsPointCollection transform without grid coverage. Indeed we put null
as argument, because we don't have one yet.
I need help from a developer who is friendly with this process to modify
properly the code without introducing regressions.
By the way I don't understand very well the purpose of the
invertGridGeometry() and consequently the impact of a first transformation
like my RasterAsPointCollection.
It seems that the chaining process is well handled by the evaluateInputs()
method so can we dissociate invertGridGeometry from that process?
Or must we introduce a call to applyRenderingTransform() before trying to
evaluate deeper transforms?