Opened 20 years ago

Closed 20 years ago

#803 closed defect (fixed)

Multiple WCS Issues

Reported by: sdlime Owned by: sdlime
Priority: high Milestone:
Component: WCS Server Version: 4.3
Severity: normal Keywords:
Cc:

Description

I suppose I should file a bug for each one, but since Martin sent one big
message I'll create one big bug. Martin's original message is below. To date
only the temporal extent without bbox issue is fixed. Others soon.

Steve

Original message:

Steve,

We have had some success with the MapServer WCS implementation, but have come
unstuck with the result of GetCoverage.  I have attached a ZIP file of a
WCS-generated TIFF file that we cannot read.  We cannot read this because
libtiff cannot read it.  Libtiff cannot read it because the "SamplesPerPixel"
values are not identical for each band in the TIFF. We get the same error from
gdalinfo (1.1.9).  I've copied this to Frank.

Also, there are some other smaller issues that we have noticed.

1. Image Format

MapServer can't supply images in GEOTIFF_16BIT format even though the
format is advertised in the DescribeCoverage document as follows:

http://maps.dnr.state.mn.us:80/cgi-bin/mapserv43?map=/usr/local/www/docs/mapserver_demos/wcs/demo.map&REQUEST=DescribeCoverage&SERVICE=WCS&VERSION=1.0.0&COVERAGE=modis

This GetCoverage request for GEOTIFF_16BIT format fails:

http://maps.dnr.state.mn.us:80/cgi-bin/mapserv43?map=/usr/local/www/docs/mapserver_demos/wcs/demo.map&SERVICE=WCS&VERSION=1.0.0&REQUEST=GetCoverage&COVERAGE=modis&CRS=EPSG:26915&BBOX=159707,4597900,1400210,5501400&bands=1&WIDTH=2480&HEIGHT=1806&FORMAT=GEOTIFF_16BIT&EXCEPTIONS=application/vnd.ogc.se_xml

2. WCS Specification Conformance

2.1 VERSION NUMBER NEGOTIATION
From the spec: "b) If a version unknown to the server is requested, the server
must send the highest version it knows that is less than the requested version."

Requesting version 500 from MapServer causes it to return a capabilities
document for version 500.

2.2. TEMPORAL QUERIES:
Doesn't support querying by Time attribute without a BBOX. From the spec again:
"A GetCoverage request must include a valid BBOX(above), or TIME, or both"
Error message generated: msWCSGetCoverage(): WCS server error. Required
parameter BBOX missing or specifies an empty region.

Query by Time and BBOX works OK:

http://maps.dnr.state.mn.us/cgi-bin/mapserv43?map=/usr/local/www/docs/mapserver_demos/wcs/demo.map&SERVICE=WCS&VERSION=1.0.0&REQUEST=GetCoverage&COVERAGE=modis&CRS=EPSG:26915&BBOX=159707,4597900,1400210,5501400&TIME=2002-001&bands=1&WIDTH=2480&HEIGHT=1806&FORMAT=GEOTIFF_RGB&EXCEPTIONS=application/vnd.ogc.se_xml

The same query using specifying only the Time parameter generates a
ServiceExceptionReport:

http://maps.dnr.state.mn.us/cgi-bin/mapserv43?map=/usr/local/www/docs/mapserver_demos/wcs/demo.map&SERVICE=WCS&VERSION=1.0.0&REQUEST=GetCoverage&COVERAGE=modis&CRS=EPSG:26915&TIME=2002-001&bands=1&WIDTH=2480&HEIGHT=1806&FORMAT=GEOTIFF_RGB&EXCEPTIONS=application/vnd.ogc.se_xml

2.3. 'NOW' keyword

MapServer doesn't recognise the use of the keyword 'now' to request the most
recent data (9.2.2.8 last sentence):

http://maps.dnr.state.mn.us/cgi-bin/mapserv43?map=/usr/local/www/docs/mapserver_demos/wcs/demo.map&SERVICE=WCS&VERSION=1.0.0&REQUEST=GetCoverage&COVERAGE=modis&CRS=EPSG:26915&BBOX=159707,4597900,1400210,5501400&TIME=now&bands=1&WIDTH=2480&HEIGHT=1806&FORMAT=GEOTIFF_RGB&EXCEPTIONS=application/vnd.ogc.se_xml

3. XML Validation

(We use Xerces for XML parsing, which appears to be the strictest parser
on the planet.  We can work around these by switching off validation.)

3.1. GetCapabilities document does not validate against the wcsCapabilities schema.

Error: Element 'VendorSpecificCapabilities' is not valid for content model:
'(,)' Problem: empty <VendorSpecificCapabilities/> element. Solution: Should
either have content from any known namespace, or the VendorSpecificCapabilites
element is optional so can be omitted.

The DescribeCoverage request: 

http://maps.dnr.state.mn.us/cgi-bin/mapserv43?map=/usr/local/www/docs/mapserver_demos/wcs/demo.map&REQUEST=DescribeCoverage&SERVICE=WCS&VERSION=1.0.0&COVERAGE=modis

Generates the following Xerces validation errors: XML error at line 75, column
18: Element 'AxisDescription' is not valid for content model:

'((metadataLink,description),name,label,,axisDescription,nullValues)'
XML error at line 39, column 53: Datatype error:
Type:InvalidDatatypeFacetException, Message: Invalid chars
encountered..
XML error at line 40, column 54: Datatype error:
Type:InvalidDatatypeFacetException, Message: Invalid chars
encountered..
XML error at line 75, column 18: Element 'AxisDescription' is not
valid for content model:

'((metadataLink,description),name,label,,axisDescription,nullValues)'

We haven't looked further into these, but guess that the first and last
are to do with the difference in case between "AxisDescription" and
"axisDescription", XML elements being case-sensitive.

Regards,
Martin

Change History (8)

comment:1 by sdlime, 20 years ago

Status: newassigned
I'll upload the original bad tiff image from work tomorrow...

comment:2 by dmorissette, 20 years ago

Cc: dmorissette@… added

comment:3 by fwarmerdam, 20 years ago

I have confirmed that the WCS service was reporting it had GEOTIFF_16BIT, but
internally (via the OUTPUTFORMAT directive) it should be GEOTIFF_INT16.  The basic
problem seems to be that there is  no validation that the formats listed in 
wcs_formats metadata match a format declared in an OUTPUTFORMAT directive or 
an internally available one. 

Steve, would you mind if I threw an error in DescribeCoverage if the 
wcs_formats listed format don't exist?  Or should I just emit a warning comment
into the DescribeCoverage results?  Or what?


comment:4 by fwarmerdam, 20 years ago

Changed <AxisDescription> to <axisDescription> to match schema (apparently). 
Change committed to 4.3 CVS tree.

comment:5 by sdlime, 20 years ago

I created a skeletal function to validate input against a list but didn't flesh 
it out. There are several other instances where is could be used: format and 
discrete times are examples. Were you thinking of a general solution or did you 
have something specific in mind?

Steve

comment:6 by sdlime, 20 years ago

I read this closer, the problem is that the metadata is bad. Yikes, I think 
that should throw an error so that a developer can fix it before publishing the 
service.

Steve

comment:7 by sdlime, 20 years ago

I believe the axisDescription problem is fixed. I read that is should be:

<axisDescription>
  <AxisDescription ...>

...and so on...

Tom K. pointed that out. Not sure why the redundancy.

Steve

comment:8 by sdlime, 20 years ago

Resolution: fixed
Status: assignedclosed
I'm going to close this. Everything but the 'NOW' time query has been fixed.
I'll open a new bug for just that one.

Steve
Note: See TracTickets for help on using tickets.