[Geoserver-users] Possible Image Mosaic time bug

Following on from my experiments with image mosaics and partial updates last week I think I’ve hit a bug (or I still don’t understand the spec). Given the following mosaics at times as shown:

Inline images 2

Inline images 3

Inline images 4

Inline images 5

When I request a WMS with time=2010-01-05/2013-08-05 I get the following (infact I get this image for all end times after 2010-01-05,2012-01-05)

Inline images 6

Is this a bug or is there some switch I need to set that forces the latest granule to be returned instead of a random one? If it is a bug I’ll file a JIRA and see if I can fix it :slight_smile:

cheers

Ian

Ian Turton

Hi Ian,
did you enable the time dimension in the “dimensions” tab of the layer configuration?

Cheers
Andrea

20120702T1200.png

20110702T1200.png

20130702T1200.png

2010-01-05,2013-08-05.png

20120102T1200.png

···

On Mon, Nov 18, 2013 at 2:06 PM, Ian Turton <ijturton@anonymised.com> wrote:

Following on from my experiments with image mosaics and partial updates last week I think I’ve hit a bug (or I still don’t understand the spec). Given the following mosaics at times as shown:

Inline images 2

Inline images 3

Inline images 4

Inline images 5

When I request a WMS with time=2010-01-05/2013-08-05 I get the following (infact I get this image for all end times after 2010-01-05,2012-01-05)

Inline images 6

Is this a bug or is there some switch I need to set that forces the latest granule to be returned instead of a random one? If it is a bug I’ll file a JIRA and see if I can fix it :slight_smile:

cheers

Ian

Ian Turton


DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk


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

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On 18 Nov 2013 13:21, “Andrea Aime” <andrea.aime@anonymised.com> wrote:

Hi Ian,
did you enable the time dimension in the “dimensions” tab of the layer configuration?

Yes and I’ve been experimenting with the presentation choice but it seems to make no difference.

The relevant part of the GetCapabilities response is

2010-01-02T00:00:00.000Z,2010-07-02T00:00:00.000Z,2011-01-02T00:00:00.000Z,2011-07-02T00:00:00.000Z,2012-01-02T00:00:00.000Z,2012-07-02T00:00:00.000Z,2013-01-02T00:00:00.000Z,2013-07-02T00:00:00.000Z

which looks right.

Ian

On Mon, Nov 18, 2013 at 2:25 PM, Ian Turton <ijturton@anonymised.com> wrote:

On 18 Nov 2013 13:21, "Andrea Aime" <andrea.aime@anonymised.com> wrote:
>
> Hi Ian,
> did you enable the time dimension in the "dimensions" tab of the layer
configuration?
>

Yes and I've been experimenting with the presentation choice but it seems
to make no difference.

Sorry, trying to help but really doing something else, so I may be missing
something.
The black areas you have in the original images, are they really
transparent?
If so I guess the code it's working as expected, it's mosaicking on all the
granules
in the time range you specified, with no particular order.

The notion of "give me the most recent in the range" is understandable, but
I don't believe
it's part of the standard, and maybe not always desirable either.
That said, we have a variable to control how many granules are
used, MAX_ALLOWED_TILES,
which can be set to 1, and then you can use SORT_BY, where you can set the
value
"sortVariable" or "sortVariable,A", "sortVariable,D" to control the sorting
order.

I just don't remember if they are both exposed by the GeoServer UI

Cheers
Andrea

--

Our support, Your Success! Visit http://opensdi.geo-solutions.it for more
information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

Hi guys,
There is a SORTING parameter in the MosaicConfiguration exposed by the GS GUI which should do that.

Cheers,
Daniele

···

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
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


On Mon, Nov 18, 2013 at 2:41 PM, Andrea Aime <andrea.aime@anonymised.com> wrote:


DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk


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

On Mon, Nov 18, 2013 at 2:25 PM, Ian Turton <ijturton@anonymised.com…> wrote:

On 18 Nov 2013 13:21, “Andrea Aime” <andrea.aime@anonymised.com> wrote:

Hi Ian,
did you enable the time dimension in the “dimensions” tab of the layer configuration?

Yes and I’ve been experimenting with the presentation choice but it seems to make no difference.

Sorry, trying to help but really doing something else, so I may be missing something.
The black areas you have in the original images, are they really transparent?
If so I guess the code it’s working as expected, it’s mosaicking on all the granules
in the time range you specified, with no particular order.

The notion of “give me the most recent in the range” is understandable, but I don’t believe
it’s part of the standard, and maybe not always desirable either.
That said, we have a variable to control how many granules are used, MAX_ALLOWED_TILES,
which can be set to 1, and then you can use SORT_BY, where you can set the value
“sortVariable” or “sortVariable,A”, “sortVariable,D” to control the sorting order.

I just don’t remember if they are both exposed by the GeoServer UI

Cheers

Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Thanks for your help guys - I knew this had to be possible. For anyone who stumbles on this thread latter the correct syntax for the sorting param is varname (ingestion) D (that is space D) - I’ll try to update the docs later as there is currently no mention of the sorting param.

Inline images 1

Thanks

Ian

···

On 18 November 2013 13:50, Daniele Romagnoli <daniele.romagnoli@anonymised.com.> wrote:

Hi guys,
There is a SORTING parameter in the MosaicConfiguration exposed by the GS GUI which should do that.

Cheers,
Daniele


Ian Turton

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
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


On Mon, Nov 18, 2013 at 2:41 PM, Andrea Aime <andrea.aime@anonymised.com> wrote:


DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk


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

On Mon, Nov 18, 2013 at 2:25 PM, Ian Turton <ijturton@anonymised.com> wrote:

On 18 Nov 2013 13:21, “Andrea Aime” <andrea.aime@anonymised.com> wrote:

Hi Ian,
did you enable the time dimension in the “dimensions” tab of the layer configuration?

Yes and I’ve been experimenting with the presentation choice but it seems to make no difference.

Sorry, trying to help but really doing something else, so I may be missing something.
The black areas you have in the original images, are they really transparent?
If so I guess the code it’s working as expected, it’s mosaicking on all the granules
in the time range you specified, with no particular order.

The notion of “give me the most recent in the range” is understandable, but I don’t believe
it’s part of the standard, and maybe not always desirable either.
That said, we have a variable to control how many granules are used, MAX_ALLOWED_TILES,
which can be set to 1, and then you can use SORT_BY, where you can set the value
“sortVariable” or “sortVariable,A”, “sortVariable,D” to control the sorting order.

I just don’t remember if they are both exposed by the GeoServer UI

Cheers

Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Documentation PR at https://github.com/geoserver/geoserver/pull/402 if some one wants to review it.

Ian

correct.jpg

···

On 18 November 2013 14:23, Ian Turton <ijturton@anonymised.com> wrote:

Thanks for your help guys - I knew this had to be possible. For anyone who stumbles on this thread latter the correct syntax for the sorting param is varname (ingestion) D (that is space D) - I’ll try to update the docs later as there is currently no mention of the sorting param.

Inline images 1

Thanks

Ian


Ian Turton

On 18 November 2013 13:50, Daniele Romagnoli <daniele.romagnoli@anonymised.com> wrote:

Hi guys,
There is a SORTING parameter in the MosaicConfiguration exposed by the GS GUI which should do that.

Cheers,
Daniele


Ian Turton

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
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


On Mon, Nov 18, 2013 at 2:41 PM, Andrea Aime <andrea.aime@anonymised.com> wrote:


DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk


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

On Mon, Nov 18, 2013 at 2:25 PM, Ian Turton <ijturton@anonymised.com> wrote:

On 18 Nov 2013 13:21, “Andrea Aime” <andrea.aime@anonymised.com> wrote:

Hi Ian,
did you enable the time dimension in the “dimensions” tab of the layer configuration?

Yes and I’ve been experimenting with the presentation choice but it seems to make no difference.

Sorry, trying to help but really doing something else, so I may be missing something.
The black areas you have in the original images, are they really transparent?
If so I guess the code it’s working as expected, it’s mosaicking on all the granules
in the time range you specified, with no particular order.

The notion of “give me the most recent in the range” is understandable, but I don’t believe
it’s part of the standard, and maybe not always desirable either.
That said, we have a variable to control how many granules are used, MAX_ALLOWED_TILES,
which can be set to 1, and then you can use SORT_BY, where you can set the value
“sortVariable” or “sortVariable,A”, “sortVariable,D” to control the sorting order.

I just don’t remember if they are both exposed by the GeoServer UI

Cheers

Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


I’ll take a look on it.
Thanks

correct.jpg

···

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
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


On Tue, Nov 19, 2013 at 10:03 AM, Ian Turton <ijturton@anonymised.com> wrote:

Documentation PR at https://github.com/geoserver/geoserver/pull/402 if some one wants to review it.

Ian

On 18 November 2013 14:23, Ian Turton <ijturton@anonymised.com> wrote:

Thanks for your help guys - I knew this had to be possible. For anyone who stumbles on this thread latter the correct syntax for the sorting param is varname (ingestion) D (that is space D) - I’ll try to update the docs later as there is currently no mention of the sorting param.

Inline images 1

Thanks

Ian


Ian Turton

On 18 November 2013 13:50, Daniele Romagnoli <daniele.romagnoli@anonymised.com> wrote:

Hi guys,
There is a SORTING parameter in the MosaicConfiguration exposed by the GS GUI which should do that.

Cheers,
Daniele


Ian Turton

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Daniele Romagnoli
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


On Mon, Nov 18, 2013 at 2:41 PM, Andrea Aime <andrea.aime@anonymised.com> wrote:


DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk


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

On Mon, Nov 18, 2013 at 2:25 PM, Ian Turton <ijturton@anonymised.com> wrote:

On 18 Nov 2013 13:21, “Andrea Aime” <andrea.aime@anonymised.com> wrote:

Hi Ian,
did you enable the time dimension in the “dimensions” tab of the layer configuration?

Yes and I’ve been experimenting with the presentation choice but it seems to make no difference.

Sorry, trying to help but really doing something else, so I may be missing something.
The black areas you have in the original images, are they really transparent?
If so I guess the code it’s working as expected, it’s mosaicking on all the granules
in the time range you specified, with no particular order.

The notion of “give me the most recent in the range” is understandable, but I don’t believe
it’s part of the standard, and maybe not always desirable either.
That said, we have a variable to control how many granules are used, MAX_ALLOWED_TILES,
which can be set to 1, and then you can use SORT_BY, where you can set the value
“sortVariable” or “sortVariable,A”, “sortVariable,D” to control the sorting order.

I just don’t remember if they are both exposed by the GeoServer UI

Cheers

Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Hi,

I am trying to get the sorting to work with an ImageMosaic layer using the
parameter above (in my case "time D", as "time" is the time-parameter in the
database granule index (Oracle Spatial).

When trying to request the layer, an error occurs because the sorting goes
wrong (see logfile excerpt at the end of this message). Without the sorting
parameter the imageMosaic displays just fine.

Our setup:
- Geoserver 2.5, running in tomcat 6 with Sun JDK 1.6.0.45
- Image Mosaic with Granule Index in Oracle Spatial (connection to the
database via org.geotools.data.oracle.OracleNGDataStoreFactory)

Does anyone have an idea what is going wrong here and how we could fix it?

Thanks in advance,
Max Stephan

The logfile entry is the following:

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Possible-Image-Mosaic-time-bug-tp5089638p5148144.html
Sent from the GeoServer - User mailing list archive at Nabble.com.

And as the logfile content only seems to be visible in nabble, here it is to
be visible in a mail as well. The sorting of the ImageMosaic granules
crashes when the process tries to determine if the column is sortable.

Best regards,
Max Stephan

The Logfile excerpt:

2014-06-26 15:28:10,436 ERROR [org.geoserver.ows] -
org.geoserver.platform.ServiceException: Rendering process failed
  at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:509)
  at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:251)
  at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:123)
  at org.geoserver.wms.GetMap.executeInternal(GetMap.java:509)
  at org.geoserver.wms.GetMap.run(GetMap.java:253)
  at org.geoserver.wms.GetMap.run(GetMap.java:124)
  at
org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:328)
  at sun.reflect.GeneratedMethodAccessor168.invoke(Unknown Source)
  at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  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.$Proxy60.getMap(Unknown Source)
  at sun.reflect.GeneratedMethodAccessor167.invoke(Unknown Source)
  at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  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:617)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at
org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:27)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:74)
  at
org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:70)
  at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)
  at
org.geoserver.flow.controller.IpBlacklistFilter.doFilter(IpBlacklistFilter.java:92)
  at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)
  at
org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:45)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at
org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:49)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  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:235)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:75)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at
org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:47)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:43)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
  at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
  at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  at java.lang.Thread.run(Thread.java:662)
Caused by: org.geotools.data.DataSourceException: Unable to create this
mosaic
  at
org.geotools.gce.imagemosaic.RasterLayerResponse.prepareResponse(RasterLayerResponse.java:1387)
  at
org.geotools.gce.imagemosaic.RasterLayerResponse.processRequest(RasterLayerResponse.java:1228)
  at
org.geotools.gce.imagemosaic.RasterLayerResponse.createResponse(RasterLayerResponse.java:1194)
  at org.geotools.gce.imagemosaic.RasterManager.read(RasterManager.java:1125)
  at
org.geotools.gce.imagemosaic.ImageMosaicReader.read(ImageMosaicReader.java:629)
  at
org.geotools.gce.imagemosaic.ImageMosaicReader.read(ImageMosaicReader.java:608)
  at
org.geoserver.catalog.SingleGridCoverage2DReader.read(SingleGridCoverage2DReader.java:140)
  at
org.geotools.renderer.lite.StreamingRenderer.readCoverage(StreamingRenderer.java:3181)
  at
org.geotools.renderer.lite.StreamingRenderer.processSymbolizers(StreamingRenderer.java:2751)
  at
org.geotools.renderer.lite.StreamingRenderer.process(StreamingRenderer.java:2684)
  at
org.geotools.renderer.lite.StreamingRenderer.drawPlain(StreamingRenderer.java:2517)
  at
org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:2066)
  at
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:837)
  at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:483)
  ... 104 more
Caused by: java.lang.NullPointerException
  at org.geotools.data.sort.MergeSortDumper.canSort(MergeSortDumper.java:66)
  at
org.geotools.data.sort.SortedFeatureReader.canSort(SortedFeatureReader.java:50)
  at
org.geotools.data.store.ContentFeatureSource$2.supportsSorting(ContentFeatureSource.java:1098)
  at
org.geotools.data.transform.Transformer.transformQuery(Transformer.java:248)
  at
org.geotools.data.transform.TransformFeatureCollection.size(TransformFeatureCollection.java:122)
  at org.geotools.data.DataUtilities.visit(DataUtilities.java:2804)
  at
org.geotools.feature.collection.AbstractFeatureCollection.accepts(AbstractFeatureCollection.java:226)
  at
org.geotools.gce.imagemosaic.catalog.CachingDataStoreGranuleCatalog.getGranuleDescriptors(CachingDataStoreGranuleCatalog.java:158)
  at
org.geotools.gce.imagemosaic.RasterManager.getGranuleDescriptors(RasterManager.java:1135)
  at
org.geotools.gce.imagemosaic.RasterLayerResponse.prepareResponse(RasterLayerResponse.java:1336)
  ... 117 more

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Possible-Image-Mosaic-time-bug-tp5089638p5148413.html
Sent from the GeoServer - User mailing list archive at Nabble.com.

Dear all,

just wanted to let you know that I found a solution for this problem.

As mentioned, we are using Oracle Spatial for storing the granule index. In
the indexer.properties file for the ImageMosaic the time parameter was
defined as "time" and upon creation of the index table in Oracle this was
automatically capitalized into "TIME". While this was no problem with normal
requests by time parameter without sorting enabled, this wasn't the case
with sorting enabled (as described in my earlier posts).

So, to fix this issue I altered the indexer.properties entries for "time" to
"TIME" and it is working fine now. The store does not necessarily need to be
recreated for fixing this. It is sufficient to replace every occurence of
the column name "time" with "TIME" in the following files after the
ImageMosaic was created:
- indexer.properties
- <ImageMosaicName>.properties
- .mosaic/<ImageMosaicName>.properties

After having set the sorting parameter for the layer to "TIME D" or "TIME A"
respectively and having reloaded the configuration and catalog, the sorting
should work as expected.

Regards,
Max

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Possible-Image-Mosaic-time-bug-tp5089638p5151167.html
Sent from the GeoServer - User mailing list archive at Nabble.com.