[mapserver-users] Re: WCS that reads NetCDF files returns "Image handling error. Attempt to operate on GDAL file with no bands"

Roger André randre at gmail.com
Fri Feb 27 15:53:37 EST 2009


Alright, found a promising lead in
http://trac.osgeo.org/mapserver/ticket/2462.  It appears that the DATA
parameter for the layer needs to specify more than just the filename
of the netcdf.  Using the syntax below returns a GeoTIFF.

DATA "netCDF:/var/www/mapfiles/netCDF/sresa1b_ncar_ccsm3_0_run1_200001.nc:tas"

Now need to figure out how to work with the extents.
--

On Fri, Feb 27, 2009 at 11:40 AM, Roger André <randre at gmail.com> wrote:
> Hi Norman,
>
> Sorry for the direct email, but much of the relevant documentation
> that I have found regarding this topic appears to have been written by
> you.  I'm hoping you can take the time to share a bit more of your
> wisdom regarding this.
>
> I would like to setup a Mapserver WCS service that reads a single
> netCDF file as the data source.  Later on I'd like to get fancy and
> read multiple files as a tileindex, with multiple time slices in them,
> but for now I am just trying to read a single file with a one-band
> data layer in it.  I am using the example you posted on the Mapserver
> website, http://mapserver.org/ogc/wcs_format.html, as well as an old
> post from you -
> http://lists.osgeo.org/pipermail/mapserver-users/2005-November/012153.html.
>  The examples are great, but I'm having trouble adapting them to my
> sample data.
>
> I have downloaded a CF convention netCDF file from
> http://www.unidata.ucar.edu/software/netcdf/examples/sresa1b_ncar_ccsm3_0_run1_200001.nc,
> which contains a SUBDATASET named "tas".  This SUBDATASET contains
> only a single band, which when queried by gdalinfo looks like this
> (Note: I have omitted the Metadata for clarity.)
> ---------------------------
> $ gdalinfo NETCDF:"sresa1b_ncar_ccsm3_0_run1_200001.nc":tas
> Warning 1: Latitude grid not spaced evenly.
> Seting projection for grid spacing is within 0.1 degrees threshold.
>
> Driver: netCDF/Network Common Data Format
> Files: none associated
> Size is 256, 128
> Coordinate System is `'
> Origin = (-0.703125000000000,89.627952755905511)
> Pixel Size = (1.406250000000000,-1.400436761811024)
> Corner Coordinates:
> Upper Left  (  -0.7031250,  89.6279528)
> Lower Left  (  -0.7031250, -89.6279528)
> Upper Right (     359.297,      89.628)
> Lower Right (     359.297,     -89.628)
> Center      ( 179.2968750,   0.0000000)
> Band 1 Block=256x1 Type=Float32, ColorInterp=Undefined
>   NoData Value=1.00000002004087734e+20
>   Metadata:
>     NETCDF_VARNAME=tas
>     NETCDF_DIMENSION_time=730136
>     NETCDF_time_units=days since 0000-1-1
> --------------------------
>
> I have setup a mapfile to read this file/layer which looks like this:
>
> --------------------------
> MAP
> NAME 'netcdf'
>
> OUTPUTFORMAT
>  NAME "GEOTIFF_FLOAT"
>  DRIVER 'GDAL/GTiff'
>  MIMETYPE 'image/tiff'
>  IMAGEMODE FLOAT32
>  EXTENSION 'tif'
> END
>
>    LAYER
>        NAME "tas"
>        STATUS OFF
>        TYPE RASTER
>        DUMP TRUE
>        DATA "sresa1b_ncar_ccsm3_0_run1_200001.nc"
>        METADATA
>            wcs_label "Test netCDF Server"
>            ows_extent '-0.7031250 -89.6279528 359.297 89.628' # <-- 0 to 360?
>            wcs_resolution '1.406250000000000 -1.400436761811024'
>            ows_srs "EPSG:4326" # <-- Not sure about this
>            wcs_formats "GEOTIFF_FLOAT"
>            wcs_nativeformat "netCDF"
>            wcs_bandcount "1" # <-- Not sure about this
>            wcs_rangeset_axes "bands"
>            wcs_rangeset_label "Atmospheric Levels"
>            wcs_rangeset_name "tas" # <-- Not sure about this
>        END # end metadata
>    END # end layer
>
> END # map
> ------------------------
>
> I took a stab at what the wcs and ows entries should look like in the
> METADATA section, but I'm not at all sure I got them right.  For
> example, the geographic extents of all the netCDF files I have seen so
> far seem to use a 0 - 360 longitude range.  I'm not really sure how to
> reconcile this with the ows_srs of EPSG:4326, of how to properly list
> the extents.  I used what gdalinfo reports, thinking that since gdal
> would be reading the file, the info should match.
>
> With this mapfile, I am able to execute a DescribeCoverage request
> using the following command:
>
> ---------------------------
> http://localhost/cgi-bin/mapserv?map=/var/www/mapfiles/netCDF/netcdf.map
> &SERVICE=WCS
> &VERSION=1.0.0
> &REQUEST=DescribeCoverage
> &COVERAGE=tas
> ---------------------------
>
> I've attached the XML that is returned, it appears to be reasonable,
> but whether it is correct or not, I'm not sure.  What is certain
> though, is that when I try to make a GetCoverage request, I get back a
> consistent error that says "Attempt to operate on GDAL file with no
> bands, layer=tas".  My GetCoverage request looks like this:
>
> ---------------------------
> http://localhost/cgi-bin/mapserv?map=/var/www/mapfiles/netCDF/netcdf.map
> &SERVICE=wcs
> &VERSION=1.0.0
> &REQUEST=GetCoverage
> &coverage=tas
> &CRS=EPSG:4326
> &BBOX=-0.703125,-89.6279528,359.297,89.628
> &WIDTH=600
> &HEIGHT=600
> &FORMAT=image/tiff
> ---------------------------
>
> The error that is returned looks like this:
>
> ---------------------------
> <?xml version='1.0' encoding="ISO-8859-1" ?>
> <ServiceExceptionReport version="1.2.0"
> xmlns="http://www.opengis.net/ogc"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://www.opengis.net/ogc
> http://schemas.opengis.net/wcs/1.0.0/OGC-exception.xsd">
>  <ServiceException>msGetGDALBandList(): Image handling error. Attempt
> to operate on GDAL file with no bands, layer=tas.
>  </ServiceException>
> </ServiceExceptionReport>
> ----------------------------
>
> And now I am stuck.  Since there are quite a few different parameters
> that need to be set, I'm not sure which of them I've messed up.
>
> Thanks in advance for any assistance you could provide with this.
>
> Roger
> --
>


More information about the mapserver-users mailing list