WaCoDiS / javaps-wacodis-backend

javaPS backend for WaCoDiS processing tools
Apache License 2.0
0 stars 2 forks source link

GPT Preprocessing Exception in landcover-classification #18

Open aklink opened 4 years ago

aklink commented 4 years ago
<?xml version="1.0" encoding="UTF-8"?><ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsAll.xsd" version="2.0.0">
  <ows:Exception exceptionCode="NoApplicableCode">
    <ows:ExceptionText>[EXCEPTION]: 
org.n52.shetland.ogc.ows.exception.NoApplicableCodeException
    at org.n52.javaps.service.handler.AbstractEngineHandler.createNoApplicableCodeExceptionWithHttpStatusInternalServerError(AbstractEngineHandler.java:45)
    at org.n52.javaps.service.handler.ExecuteHandler.handle(ExecuteHandler.java:102)
    at org.n52.javaps.service.handler.ExecuteHandler.handle(ExecuteHandler.java:58)
    at org.n52.iceland.request.operator.GenericRequestOperator.receive(GenericRequestOperator.java:245)
    at org.n52.iceland.request.operator.GenericRequestOperator.receiveRequest(GenericRequestOperator.java:191)
    at org.n52.iceland.service.operator.GenericServiceOperator.receiveRequest(GenericServiceOperator.java:100)
    at org.n52.iceland.binding.pox.PoxBinding.doPostOperation(PoxBinding.java:86)
    at org.n52.iceland.service.Service.post(Service.java:150)
    at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:208)
    at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:274)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1839)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.n52.javaps.engine.EngineException: java.lang.RuntimeException
    at org.n52.javaps.engine.impl.FileBasedResultPersistence.getResult(FileBasedResultPersistence.java:219)
    at org.n52.javaps.engine.impl.EngineImpl.onJobCompletion(EngineImpl.java:201)
    at org.n52.javaps.engine.impl.EngineImpl.access$300(EngineImpl.java:78)
    at org.n52.javaps.engine.impl.EngineImpl$Job.setJobCompletionInternal(EngineImpl.java:423)
    at org.n52.javaps.engine.impl.EngineImpl$Job.run(EngineImpl.java:414)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    ... 1 more
Caused by: java.lang.RuntimeException
    at org.n52.javaps.algorithm.annotation.ExecuteBinding.execute(ExecuteBinding.java:64)
    at org.n52.javaps.algorithm.annotation.AnnotatedAlgorithm.execute(AnnotatedAlgorithm.java:61)
    at org.n52.javaps.engine.impl.EngineImpl$Job.run(EngineImpl.java:394)
    ... 5 more
Caused by: java.lang.NullPointerException
    at org.n52.wacodis.javaps.preprocessing.GptPreprocessor.preprocess(GptPreprocessor.java:75)
    at org.n52.wacodis.javaps.preprocessing.GptPreprocessor.preprocess(GptPreprocessor.java:25)
    at org.n52.wacodis.javaps.algorithms.LandCoverClassificationAlgorithm.lambda$preprocessOpticalImages$1(LandCoverClassificationAlgorithm.java:179)
    at java.util.ArrayList.forEach(ArrayList.java:1257)
    at org.n52.wacodis.javaps.algorithms.LandCoverClassificationAlgorithm.preprocessOpticalImages(LandCoverClassificationAlgorithm.java:170)
    at org.n52.wacodis.javaps.algorithms.LandCoverClassificationAlgorithm.createInputArgumentValues(LandCoverClassificationAlgorithm.java:152)
    at org.n52.wacodis.javaps.algorithms.AbstractAlgorithm.executeProcess(AbstractAlgorithm.java:63)
    at org.n52.wacodis.javaps.algorithms.LandCoverClassificationAlgorithm.execute(LandCoverClassificationAlgorithm.java:129)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.n52.javaps.algorithm.annotation.ExecuteBinding.execute(ExecuteBinding.java:59)
    ... 7 more
</ows:ExceptionText>
  </ows:Exception>
</ows:ExceptionReport>
aklink commented 4 years ago
<?xml version="1.0" encoding="UTF-8"?> 
<wps:Execute
    xmlns:wps="http://www.opengis.net/wps/2.0" 
    xmlns:ows="http://www.opengis.net/ows/2.0" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.opengis.net/wps/2.0 ../wps.xsd" 

    service="WPS" 
    version="2.0.0" 
    response="document" 
    mode="sync"> 

    <ows:Identifier>de.hsbo.wacodis.land_cover_classification</ows:Identifier> 
    <!-- S2B_MSIL2A_20180420T103019_N0207_R108_T32ULB_20180420T114307_10m_20m -->
    <wps:Input id="OPTICAL_IMAGES_SOURCES">
        <wps:Data mimeType="text/plain">https://scihub.copernicus.eu/dhus/odata/v1/Products('461bcb9c-34b4-40f7-95c7-ad26bcd92c17')/$value</wps:Data>
    </wps:Input>
    <!-- S2B_MSIL2A_20180629T103019_N0208_R108_T32ULB_20180924T145004_10m_20m -->
    <wps:Input id="OPTICAL_IMAGES_SOURCES">
        <wps:Data mimeType="text/plain">https://scihub.copernicus.eu/dhus/odata/v1/Products('cfe69dfb-b255-4571-89bc-b30849779ddb')/$value</wps:Data>
    </wps:Input>
    <!-- S2A_MSIL2A_20180707T104021_N0208_R008_T32ULB_20180707T140903_10m_20m -->
    <wps:Input id="OPTICAL_IMAGES_SOURCES">
        <wps:Data mimeType="text/plain">https://scihub.copernicus.eu/dhus/odata/v1/Products('6c218b36-bdf0-40aa-afaf-e6ddbe274355')/$value</wps:Data>
    </wps:Input>
    <!-- S2B_MSIL2A_20180927T103019_N0208_R108_T32ULB_20180927T155848_10m_20m -->
    <wps:Input id="OPTICAL_IMAGES_SOURCES">
        <wps:Data mimeType="text/plain">https://scihub.copernicus.eu/dhus/odata/v1/Products('30da491c-1cbb-475a-a28a-6c1b6beb0d05')/$value</wps:Data>
    </wps:Input>
    <!-- S2B_MSIL2A_20181010T104019_N0209_R008_T32ULB_20181010T171128_10m_20m -->
    <wps:Input id="OPTICAL_IMAGES_SOURCES">
        <wps:Data mimeType="text/plain">https://scihub.copernicus.eu/dhus/odata/v1/Products('21eb3657-9a68-46cf-979a-9b731dfedf24')/$value</wps:Data>
    </wps:Input>
    <wps:Input id="AREA_OF_INTEREST">
        <wps:Data mimeType="text/plain">[6.8579016,50.9392902,7.6795652,51.3647486]</wps:Data>
    </wps:Input>
    <wps:Input id="REFERENCE_DATA">
        <wps:Reference xlink:href="http://wacodis.eftas.com:8081/geoserver/wacodis/ows?service=WFS&amp;version=1.0.0&amp;request=GetFeature&amp;typeName=wacodis%3Awacodis_traindata_191119&amp;maxFeatures=200&amp;srsName=epsg:32632&amp;outputFormat=gml3" mimeType="text/xml" schema="http://schemas.opengis.net/gml/3.0.0/base/feature.xsd" />
    </wps:Input>
    <wps:Output id="PRODUCT" transmission="reference" mimeType="image/geotiff"/>
    <wps:Output id="METADATA" transmission="value" mimeType="text/json"/>
</wps:Execute>
aklink commented 4 years ago

Hinweis: S2B_MSIL2A_20180420T103019_N0207_R108_T32ULB_20180420T114307_10m_20m ist älter als 2 Jahre, d.h. sind nicht mehr hochverfügbar (wird ggf. erst mit Stunden Verzögerung bereitgestellt)

aklink commented 4 years ago

Fehlermeldung gibt es je nach selektierten Szenen (Szenen auskommentieren) noch in weiteren Variationen:

Caused by: org.n52.javaps.engine.EngineException: java.lang.RuntimeException: No preprocessed Sentinel files available.
    at org.n52.javaps.engine.impl.FileBasedResultPersistence.getResult(FileBasedResultPersistence.java:219)
    at org.n52.javaps.engine.impl.EngineImpl.onJobCompletion(EngineImpl.java:201)
    at org.n52.javaps.engine.impl.EngineImpl.access$300(EngineImpl.java:78)
    at org.n52.javaps.engine.impl.EngineImpl$Job.setJobCompletionInternal(EngineImpl.java:423)
    at org.n52.javaps.engine.impl.EngineImpl$Job.run(EngineImpl.java:414)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    ... 1 more
Caused by: java.lang.RuntimeException: No preprocessed Sentinel files available.
    at org.n52.javaps.algorithm.annotation.ExecuteBinding.execute(ExecuteBinding.java:64)
    at org.n52.javaps.algorithm.annotation.AnnotatedAlgorithm.execute(AnnotatedAlgorithm.java:61)
    at org.n52.javaps.engine.impl.EngineImpl$Job.run(EngineImpl.java:394)
    ... 5 more
Caused by: org.n52.wacodis.javaps.WacodisProcessingException: No preprocessed Sentinel files available.
    at org.n52.wacodis.javaps.algorithms.LandCoverClassificationAlgorithm.preprocessOpticalImages(LandCoverClassificationAlgorithm.java:196)
    at org.n52.wacodis.javaps.algorithms.LandCoverClassificationAlgorithm.createInputArgumentValues(LandCoverClassificationAlgorithm.java:152)
    at org.n52.wacodis.javaps.algorithms.AbstractAlgorithm.executeProcess(AbstractAlgorithm.java:63)
    at org.n52.wacodis.javaps.algorithms.LandCoverClassificationAlgorithm.execute(LandCoverClassificationAlgorithm.java:129)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.n52.javaps.algorithm.annotation.ExecuteBinding.execute(ExecuteBinding.java:59)
    ... 7 more
aklink commented 4 years ago

Mit der Szene S2B_MSIL2A_20181010T104019_N0209_R008_T32ULB_20181010T171128_10m_20m alleine (alle anderen auskommentiert) funktioniert es

Nachtrag: Die Szene war als einzige der gelisteten Szenen noch im Docker Volume temporär zwischengespeichert aus früherem Lauf: 26. Feb 12:20 S2B_MSIL2A_20181010T104019_N0209_R008_T32ULB_20181010T171128.SAFE

SebaDro commented 4 years ago

Mit dem o.a. Request wird u.a. zwischendurch folgende Exception geloggt:

Caused by: org.esa.snap.core.gpf.graph.GraphException: [NodeId: Subset] invalid region
    at org.esa.snap.core.gpf.graph.NodeContext.initTargetProduct(NodeContext.java:79) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.graph.GraphContext.initNodeContext(GraphContext.java:195) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.graph.GraphContext.initNodeContext(GraphContext.java:178) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.graph.GraphContext.initOutput(GraphContext.java:162) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.graph.GraphContext.<init>(GraphContext.java:91) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.graph.GraphContext.<init>(GraphContext.java:64) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.graph.GraphProcessor.executeGraph(GraphProcessor.java:128) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.main.DefaultCommandLineContext.executeGraph(DefaultCommandLineContext.java:86) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.main.CommandLineTool.executeGraph(CommandLineTool.java:534) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.main.CommandLineTool.runGraph(CommandLineTool.java:388) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.main.CommandLineTool.runGraphOrOperator(CommandLineTool.java:287) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.main.CommandLineTool.run(CommandLineTool.java:188) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.main.CommandLineTool.run(CommandLineTool.java:121) ~[snap-gpf-7.0.3.jar:?]
    at org.esa.snap.core.gpf.main.GPT.run(GPT.java:54) ~[snap-gpf-7.0.3.jar:?]
    at org.n52.wacodis.javaps.preprocessing.gpt.GptExecutor.executeGraph(GptExecutor.java:34) ~[javaps-wacodis-backend-0.0.1-SNAPSHOT.jar:?]
    at org.n52.wacodis.javaps.preprocessing.GptPreprocessor.preprocess(GptPreprocessor.java:87) ~[javaps-wacodis-backend-0.0.1-SNAPSHOT.jar:?]
    ... 20 more

Das lässt darauf schließen, dass die AreaOfInterest, die als WPS Input angegeben ist, nicht zu den Sentinel-Szenen passt. Der von dir zuletzt gepostete Log ist ein Folgefehler, da keine Szenen vorprozessiert werden konnten und somit auch nicht für die weitere Ausführung des Prozesses vorliegen. Du müsstest deinen Request demnach so anpassen, das die AoI zu den Szenen passt.

aklink commented 4 years ago

POLYGON ((6.8579016 50.9392902, 6.8579016 51.3647486, 7.6795652 51.3647486, 7.6795652 50.9392902, 6.8579016 50.9392902)) Also, wenn sich an den Szenen nichts geändert hat, dann müsste die AOI so passen, d.h. komplett innerhalb der Sentinel2 Szenen liegen, hab [6.8579016,50.9392902,7.6795652,51.3647486] in das o.a. WKT Polygon umgesetzt. Ist wegen WGS84 (Lat Lon) EPSG:4326 etwas gedreht gegenüber UTM32 EPSG:32632, aber sonst passt das, liegt komplett innerhalb der Szenen.

aklink commented 4 years ago

Zusammenfassung der Tests: Fehler liegt am Long Term Storage (Szenen nicht mehr sofort verfügbar)

SebaDro commented 4 years ago

Da unser System ursprünglich darauf ausgelegt ist, regelmäßig aktuelle Szenen zu verarbeiten, die noch nicht im Long Term Storage vorliegen, ist es momentan kein kritische Problem. Ich lasse den Issue dennoch offen, um die Problematik für die Zukunft weiterhin berücksichtigen zu können.