Opened 5 years ago

Closed 4 years ago

#263 closed defect (fixed)

WCPS extendExpr implementation is not correct

Reported by: dirk.daems@… Owned by: pbaumann
Priority: major Milestone: 8.4
Component: petascope Version: 8.3
Keywords: Cc:
Complexity: Medium

Description

The extendExpr implementation doesn't seem to be correct. According to the WCPS spec there is no restriction on the position and size of the new bounding box; in particular, it does not need to lie outside the coverage; it may intersect with the coverage; it may lie completely inside the coverage; it may not intersect the coverage at all (in which case a coverage completely filled with null values will be generated). But if I try using a bbox that intersects, the query fails. It looks like the translation of WCPS to RASQL is correct, but the RASQL query can't be executed. Indeed, if you look at the definition of the RASQL extend function the domain for extending must, for every boundary element, be at least as large as the MDD's domain boundary. In the following query this is not the case, which causes the error message listed below.

When I use a bbox that is as large as the MDD's domain boundary the following RASQL query is executed, which seems to be correct:
select png(extend(msa,[0:885,0:710])) from mean_summer_airtemp AS msa

But when I use a bbox that is larger than the MDD's domain boundary, the same RASQL query is executed:
select png(extend(msa,[0:885,0:710])) from mean_summer_airtemp AS msa

WCPS query:

for msa in (mean_summer_airtemp)
return encode(
   extend(msa,
          x : "http://www.opengis.net/def/crs/EPSG/0/4326" (120:140),
          y : "http://www.opengis.net/def/crs/EPSG/0/4326" (-40:-10)
          ),
"png")

Error message:

Cause: Error evaluating rasdaman query: 'select png(extend(msa,[160:560,20:620])) from mean_summer_airtemp AS msa
	at petascope.PetascopeInterface.handleProcessCoverages(PetascopeInterface.java:619)
	at petascope.PetascopeInterface.doGet(PetascopeInterface.java:318)
	at petascope.PetascopeInterface.doPost(PetascopeInterface.java:211)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	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.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:103)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:722)
Caused by: ResourceError: Could not evaluate rasdaman query: 'select png(extend(msa,[160:560,20:620])) from mean_summer_airtemp AS msa'
Cause: Error evaluating rasdaman query: 'select png(extend(msa,[160:560,20:620])) from mean_summer_airtemp AS msa
	at petascope.wcps.server.core.ProcessCoveragesRequest.execute(ProcessCoveragesRequest.java:139)
	at petascope.PetascopeInterface.handleProcessCoverages(PetascopeInterface.java:586)
	... 16 more
Caused by: RasdamanRequestFailed: Error evaluating rasdaman query: 'select png(extend(msa,[160:560,20:620])) from mean_summer_airtemp AS msa
	at petascope.util.ras.RasUtil.executeRasqlQuery(RasUtil.java:118)
	at petascope.wcps.server.core.ProcessCoveragesRequest.execute(ProcessCoveragesRequest.java:137)
	... 17 more
Caused by: org.odmg.QueryException: Execution error 421 in line 1, column 12, near token extend: Target interval of extend operation does not cover MDD to be extended.
	at rasj.odmg.RasOQLQuery.execute(RasOQLQuery.java:249)
	at petascope.util.ras.RasUtil.executeRasqlQuery(RasUtil.java:111)
	... 18 more
DEBUG [09:48:54] PetascopeInterface@430: Done marshalling Error Report.

Change History (4)

comment:1 Changed 4 years ago by abeccati

  • Milestone set to 8.4
  • Owner changed from dmisev to pbaumann
  • Status changed from new to assigned

comment:2 Changed 4 years ago by dmisev

I submitted a patch to remove this limitation in rasql.

I think the limitation was there because the function name is extend, which means grow, and not shrink or intersect the original domain. Perhaps in future we could replace extend() with a more generically named function for changing the domain, e.g. chdom?

comment:3 Changed 4 years ago by dmisev

  • Complexity set to Medium

comment:4 Changed 4 years ago by dmisev

  • Resolution set to fixed
  • Status changed from assigned to closed
Note: See TracTickets for help on using tickets.