Hello List,

I am trying to get a NITF image into Geoserver via REST. I use the 
(almost) current Geoserver 2.2 with the appropriate GDAL plugin. I can 
see the option to add a new raster data source in the NITF format via 
the web interface and I can also add NITF images that way. However, I 
want to use the rest interface and I ran accross a problem there.
First I create a new coverage store:
curl -u admin:geoserver -v -XPOST -H 'Content-Type: application/xml' -d 
'<coverageStore><name>testCurl</name><workspace>my_wms</workspace><enabled>true</enabled></coverageStore>'
 
http://localhost:8080/geoserver/rest/workspaces/my_wms/coveragestores

which indeed creates a new coverage store. When I look at it in the list 
of stores (sorry, don't know if this is the correct translation, I have 
the UI in German and it says "Datenquellen"), the icon in the front is a 
yellow "!" in a triangle and the type is written as "?". I assume that's 
correct at this point. When I store a GeoTiff in such a coverage store 
via REST, it works.

Now I try to upload the actual NITF file:
curl -u admin:geoserver -v -XPUT -H 'Content-type: image/nitf' 
--data-binary @image.nitf 
'http://localhost:8080/geoserver/rest/workspaces/my_wms/coveragestores/testCurl/file.worldimage?configure=first\&coverageName=testCurl'

This results in a 500 error:
*   Trying 127.0.0.1... connected
* Server auth using Basic with user 'admin'
  > PUT 
/geoserver/rest/workspaces/my_wms/coveragestores/testCurl/file.worldimage?configure=first\&coverageName=testCurl
 
HTTP/1.1
  > Authorization: Basic YWRtaW46Z2Vvc2VydmVy
  > User-Agent: curl/7.22.0 (x86_64-unknown-linux-gnu) libcurl/7.22.0 
OpenSSL/1.0.0e zlib/1.2.5 c-ares/1.7.5 libidn/1.22 libssh2/1.2.9
  > Host: localhost:8080
  > Accept: */*
  > Content-type: image/nitf
  > Content-Length: 5336204
  > Expect: 100-continue
  >
< HTTP/1.1 100 Continue
< HTTP/1.1 500 Internal Server Error
< Content-Type: text/plain
< Transfer-Encoding: chunked
< Server: Jetty(6.1.8)
* HTTP error before end of send, stop sending
<
* Closing connection #0

The geoserver log shows that this file is not supported as worldimage:
02 Nov 12:28:27 INFO [catalog.rest] - PUT file, mimetype: image/nitf
02 Nov 12:28:27 INFO [catalog.rest] - Using existing coverage store: 
testCurl
02 Nov 12:28:27 ERROR [geoserver.rest] - Error auto-configuring 
coverage:Unsupported file format
02 Nov 12:28:27 ERROR [geoserver.rest] -
org.geoserver.rest.RestletException: java.lang.IllegalArgumentException: 
Unsupported file format
          at 
org.geoserver.catalog.rest.CoverageStoreFileResource.handlePut(CoverageStoreFileResource.java:227)
          at org.restlet.Finder.handle(Finder.java:298)
          at 
org.geoserver.rest.BeanDelegatingRestlet.handle(BeanDelegatingRestlet.java:37)
          at org.restlet.Filter.doHandle(Filter.java:105)
          at org.restlet.Filter.handle(Filter.java:134)
          at org.restlet.Router.handle(Router.java:444)
          at 
org.geoserver.rest.RESTDispatcher$1.handle(RESTDispatcher.java:204)
          at 
com.noelios.restlet.ext.servlet.ServletConverter.service(ServletConverter.java:129)
          at 
org.geoserver.rest.RESTDispatcher.handleRequestInternal(RESTDispatcher.java:86)
          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.doPut(FrameworkServlet.java:800)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:730)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
          at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
          at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
          at 
org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:23)
          at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
          at 
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:74)
          at 
org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:45)
          at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
          at 
org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:49)
          at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
          at 
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
          at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
          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:201)
          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.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:97)
          at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
          at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
          at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
          at 
org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:71)
          at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
          at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:47)
          at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
          at 
org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:46)
          at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
          at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
          at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
          at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
          at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
          at 
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
          at 
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
          at 
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
          at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
          at org.mortbay.jetty.Server.handle(Server.java:324)
          at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
          at 
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
          at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)
          at 
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
          at 
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
          at 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
          at 
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
Caused by: java.lang.IllegalArgumentException: Unsupported file format
          at 
org.geotools.gce.image.WorldImageFormat.getWorldExtension(WorldImageFormat.java:328)
          at 
org.geotools.gce.image.WorldImageReader.prepareWorldImageGridToWorldTransform(WorldImageReader.java:703)
          at 
org.geotools.gce.image.WorldImageReader.getHRInfo(WorldImageReader.java:316)
          at 
org.geotools.gce.image.WorldImageReader.<init>(WorldImageReader.java:264)
          at 
org.geotools.gce.image.WorldImageFormat.getReader(WorldImageFormat.java:345)
          at 
org.geotools.gce.image.WorldImageFormat.getReader(WorldImageFormat.java:162)
          at 
org.geotools.gce.image.WorldImageFormat.getReader(WorldImageFormat.java:56)
          at 
org.geoserver.catalog.rest.CoverageStoreFileResource.handlePut(CoverageStoreFileResource.java:117)
          ... 79 more


As the REST API reference only states the three file extensions geotiff, 
worldimage and imagemosaic and none of these work, I assume that there 
exists another extension definition for NITF files. Either that or maybe 
the mimetype is not set as expected by Geoserver. I peeked in the source 
code but so far couldn't find anything helpful. Can anyone point me in 
the right direction for uploading NITF files via rest?

Thanks in advance for any responses.

Kind regards,
Daniel Haferkorn

-- 
Dipl.-Inform. (FH) Daniel Haferkorn
Fraunhofer Institut für Optronik, Systemtechnik und Bildauswertung IOSB
Abteilung Interoperabilität und Assistenzsysteme IAS
Fraunhoferstraße 1, 76131 Karlsruhe, Germany
Telefon +49 721 6091-431
mailto:[email protected]
http://www.iosb.fraunhofer.de


------------------------------------------------------------------------------
LogMeIn Central: Instant, anywhere, Remote PC access and management.
Stay in control, update software, and manage PCs from one command center
Diagnose problems and improve visibility into emerging IT issues
Automate, monitor and manage. Do more in less time with Central
http://p.sf.net/sfu/logmein12331_d2d
_______________________________________________
Geoserver-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to