Opened 9 years ago

Closed 6 years ago

#950 closed enhancement (fixed)

Null value must be an integer or integer interval

Reported by: olcl Owned by: Dimitar Misev
Priority: major Milestone: 9.7
Component: qlparser Version: development
Keywords: Cc: Peter Baumann, Bang Pham Huu, Vlad Merticariu
Complexity: Hard

Description (last modified by Dimitar Misev)

Currently the Null value when ingesting using wcst must be an integer or integer interval.

The vast majority of our netcdf files are datatype float so this feature does not work.

The error we receive is :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ows:ExceptionReport version="2.0.0"
    xsd:schemaLocation="http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
    xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink">
    <ows:Exception exceptionCode="InvalidPropertyValue">
        <ows:ExceptionText>Nil value 9.96920996839e+36 not supported. Only integer, or integer interval (written as "integer:integer") values are supported.</ows:ExceptionText>
    </ows:Exception>

</ows:ExceptionReport>

Change History (3)

comment:1 by Dimitar Misev, 9 years ago

Cc: Peter Baumann Alex Dumitru Vlad Merticariu added
Complexity: MediumHard
Component: undecidedqlparser
Description: modified (diff)
Milestone: 10.0
Type: defectenhancement

comment:2 by Bang Pham Huu, 8 years ago

with the current netcdf recipe, it supports an option to set Null value, by setting (i.e: "nilValue": "-99999" as ingredient http://rasdaman.org/wiki/WCSTImportGuide/GeneralRecipe, this is a solution with WCST_Import (if someone find this ticket for the same problem).

comment:3 by Dimitar Misev, 6 years ago

Cc: Bang Pham Huu added; Alex Dumitru removed
Milestone: 10.09.7
Resolution: fixed
Status: newclosed

A patch has been applied that fixes this issue and allows specifying floating point values.

Some relevant points:

  • This changes RASBASE and requires update_db.sh to be run (otherwise an appropriate error will be logged in the rasserver logs)
  • When a single null value is specified (not an interval), values are considered to be null values if they are in the interval [nullvalue - DBL_EPSILON, nullvalue + DBL_EPSILON]. DBL_EPSILON is a standard epsilon value for doubles in C++ from the <cfloat> header; more info here: https://en.wikipedia.org/wiki/Machine_epsilon
  • When an * is specified as an upper or lower bound for a null value interval, internally it's converted to a minimum or maximum double value
  • nan values are handled correctly as well (and not allowed in intervals)
Note: See TracTickets for help on using tickets.