[MapServer-users] mapserver: using a shapefile to handle time with netcdf data

Trygve Aspenes trygve at aspenes.priv.no
Thu Aug 31 03:35:19 PDT 2023


Hi all

I try to use a shapefile to handle time. But he trick is my data source 
is a netcdf file. For this I need the gdal netcdf driver.

My shapefile looks like this:
ogrinfo points.shp points
--------------------------------
INFO: Open of `points.shp'
       using driver `ESRI Shapefile' successful.

Layer name: points
Metadata:
   DBF_DATE_LAST_UPDATE=2023-08-31
Geometry: Polygon
Feature Count: 67
Extent: (-18.100000, 49.800000) - (54.200000, 75.200000)
Layer SRS WKT:
GEOGCRS["WGS 84",
     DATUM["World Geodetic System 1984",
         ELLIPSOID["WGS 84",6378137,298.257223563,
             LENGTHUNIT["metre",1]]],
     PRIMEM["Greenwich",0,
         ANGLEUNIT["degree",0.0174532925199433]],
     CS[ellipsoidal,2],
         AXIS["latitude",north,
             ORDER[1],
             ANGLEUNIT["degree",0.0174532925199433]],
         AXIS["longitude",east,
             ORDER[2],
             ANGLEUNIT["degree",0.0174532925199433]],
     ID["EPSG",4326]]
Data axis to CRS axis mapping: 2,1
location: String (112.0)
time: String (80.0)
OGRFeature(points):0
   location (String) = NETCDF:<path to netcdf file>:<parameter name>
   time (String) = 2023-08-31T00:00:00Z
   POLYGON ((-18.1 49.8,-18.1 75.2,54.2 75.2,54.2 49.8,-18.1 49.8))
...
etc for all the time stamps
--------------------------------------------------

The setup mapfile like this first with a time idx helper layer:
   LAYER
     STATUS ON
     NAME "time_idx"
     TYPE POLYGON
     DATA "points"
     METADATA
       "wms_title" "TIME INDEX"
       "wms_srs" "EPSG:4326"
       "wms_extent" "-18.1 49.8 54.2 75.2"
       "wms_timeextent" "2023-08-31T00:00:00Z/2023-08-02T18:00:00Z/PT1H"
       "wms_timeitem" "time"
       "wms_timedefault" "2023-08-31T12:00:00Z"
       "wms_enable_request" "*"
     END
     CONNECTION "points.shp"
     CONNECTIONTYPE OGR
   END

and the layer itself:
   LAYER
     NAME "layer_name"
     STATUS ON
     TYPE raster

     PROCESSING   "BANDS=1"

     PROJECTION
       <proj data>
     END
     TILEINDEX "time_idx"
     TILEITEM "location"

     METADATA
         "wms_title" "layer_title"
         "wms_timeextent" 
"2023-08-31T00:00:00Z/2023-09-01T18:00:00Z/PT1H"
         "wms_timeitem" "time"
         "wms_enable_request" "*"
     END
   END


Now requesting this layer I get:
<?xml version='1.0' encoding="UTF-8" standalone="no" ?>
<ServiceExceptionReport version="1.3.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/wms/1.3.0/exceptions_1_3_0.xsd">
<ServiceException>
msDrawMap(): Image handling error. Failed to draw layer named 
'<layer name>'.
msDrawRasterLayerLow(): Unable to access file. Corrupt, empty or missing 
file './NETCDF:<path to netcdf file>:<parameter name>' for layer 
'<layer name>'. ./NETCDF:<path to netcdf file>:<parameter name>: 
No such file or directory
</ServiceException>
</ServiceExceptionReport>

So for some reason the data is handled as a file name( prepending ./ to 
the location in my shapefile), and not using gdal driver netcdf to open 
the file.

Is there a way to tell mapserver to handle this correctly using the gdal 
netcdf driver opening the file?

Trygve Aspenes


More information about the MapServer-users mailing list