Opened 3 years ago

Closed 12 months ago

#598 closed defect (fixed)

WCPS1.5_domain metadata expression with subsetting

Reported by: pcampalani Owned by: mdumitru
Priority: major Milestone: 10.0
Component: petascope Version: development
Keywords: domain subset Cc: vmerticariu, mdumitru, pbaumann
Complexity: Medium

Description

It seems that the parser only accepts coverage identifiers in a domain metadata expression.

Working query:

for c in (eobstest)
return domain( c , Lat, "http://localhost:8090/def/crs/EPSG/0/4326")
[1] (-40.5,75.5)

Trimming the coverage won't work:

for c in (eobstest)
return domain( c[Lat(0:10)] , Lat, "http://localhost:8090/def/crs/EPSG/0/4326")

Log:
...
 TRACE [13:03:46] RasUtil@245: Parsing abstract WCPS query...
line 2:16 mismatched input '[' expecting COMMA
...

This does not affect the imagecrsdomain function:

for c in (eobscov)
return imagecrsdomain( c[Lat(0:10)] , Lat)
[1] (131,151)

Change History (12)

comment:1 Changed 3 years ago by pcampalani

  • Cc vmerticariu mdumitru added

comment:2 Changed 3 years ago by pcampalani

  • Owner changed from pcampalani to uadhikari
  • Status changed from new to assigned

comment:3 Changed 3 years ago by uadhikari

The feature that is wanted is not allowed in the WCPS 1.0 standard.

metaDataExpr: 
identifier ( coverageExpr ) 
| imageCrs ( coverageExpr ) 
| imageCrsDomain ( coverageExpr ) 
| imageCrsDomain ( coverageExpr , axisName ) 
| crsSet ( coverageExpr ) 
| domain ( coverageName , axisName , crsName ) 
| interpolationDefault ( coverageExpr , fieldName ) 
| interpolationSet ( coverageExpr , fieldName ) 
coverageName: name     /* coverage identifier as in WCS [OGC 07-067r5] */

The first argument of domain is coverageName (variable), and not the coverageExpr (which incudes trimExpr).

comment:4 Changed 3 years ago by pcampalani

  • Cc pbaumann added

@Peter, how is WCPS 2.0 on this?
All other metadata expressions (even imageCrsDomain) take a coverage expression as argument: I'm not really sure why only the domain expression takes a coverage name.

comment:5 Changed 3 years ago by uadhikari

  • Owner changed from uadhikari to pcampalani

@pcampalini Grammar fixed (will be effective after the patch is applied). Reassigning to you so that you can fix the query evaluation.

comment:6 Changed 16 months ago by dmisev

  • Owner changed from pcampalani to mdumitru

comment:7 Changed 14 months ago by bphamhuu

Now, one can add interval to coverage name, but it will not has any effect and still returns the full domain of the axisName.

http://localhost:8080/rasdaman/ows?service=WCS&version=2.0.1&request=ProcessCoverages&
query=for c in (eobstest) return domain( c[Lat(0:8)] , Lat, "http://localhost:8080/def/crs/EPSG/0/4326")

returns (-40.50,75.50).

So maybe in WCPS 2.0, it can calculate the domain of axis in CRS also.

comment:8 follow-up: Changed 14 months ago by pcampalani

Pham,
'now' means you submitted a patch for this or just tried it out?

Thanks for the update, let's just keep it open until it will be considered again for patching. !

comment:9 in reply to: ↑ 8 Changed 14 months ago by bphamhuu

Replying to pcampalani:

Pham,
'now' means you submitted a patch for this or just tried it out?

Thanks for the update, let's just keep it open until it will be considered again for patching. !

Piero,

Now is just tried it out, as I could not do anything when it is not in WCPS 1 grammar (comment 3).

All of your tickets still open until it is validated (e.g pass some test cases). Thanks for your sharing.

comment:10 Changed 14 months ago by bphamhuu

  • Cc mantovani@… removed
  • Milestone changed from Future to 10.0
  • Summary changed from domain metadata expression with subsetting to WCPS1.5_domain metadata expression with subsetting

comment:11 Changed 13 months ago by bphamhuu

From WCPS1.0 specification document (OGC 08-068r1, page 16/75), domain(C, a, c) with C is coverage expression, a is dimension, c is crs

domain of the coverage, expressed in one of its CRSs, 
for a given (spatial, or temporal) dimension

then I think it was developed correctly, i.e

for c in (eobstest) return domain(c[Lat(0:8)], Lat, "http://localhost:8080/def/crs/EPSG/0/4326")

will return the domain of coverage: eobstest in dimesion: Lat with (-40.5:75.5)
instead of (0:8).

If no one has different idea, I will close this ticket soon.

comment:12 Changed 12 months ago by bphamhuu

  • Resolution set to fixed
  • Status changed from assigned to closed

So domain() operator will return the domain of one dimension of a coverage (not only coverage identifier) as in example:

 for c in (eobstest) 
 return domain(c[Lat(0:8)], Lat, "​http://localhost:8080/def/crs/EPSG/0/4326")

which returns domain of Lat of eobstest is -40.5:75.5 in WCPS1.5 also.

I will close this ticket here as it was fixed in WCPS1.0 and has been fixed in WCPS1.5

Note: See TracTickets for help on using tickets.