I can answer myself; it might help some others in the future.

So the trick or problem is SHAPEPATH.

https://github.com/MapServer/MapServer/blob/main/src/mapraster.c#L442-L452

Here in the code the method to msDrawRasterBuildRasterPath is decided, and if you don't have SHAPEPATH set and you use tileindex, mapserver thinks you have a file an prepend some path, like './'. When I set SHAPEPATH to "" ( ie empty) in my config "" is prepended to my driver:filename:variable string. And I get what I want.

I don't think this is a feature, but it works as long as you don't need to set SHAPEPATH to something else in you map file.

Trygve Aspenes

Den 2023-09-21 15:51, skrev Trygve Aspenes via MapServer-users:
Hi
I have a postgis db with netcdf filenames and the rest of the needed columns.

So I have a layer, time_idx, to get the geom.
And the raster layer with tileitem and tileindex like this:
LAYER
  NAME "layername"
  STATUS ON
  TYPE raster
  PROCESSING   "BANDS=1"

  TILEITEM "filename"
  TILEINDEX "time_idx"
END

The problem is the filename is handled as a full path to a filename. But since this is a netcdf I need something like this
(See eg https://gdal.org/drivers/raster/netcdf.html#raster-netcdf)

gdalinfo NETCDF:"sst.nc":tos
Where NETCDF is the drive
sst.nc is the filename
tos is the variable name in the file.


Is there a way to prepend the driver and append the variable name to the tileitem? Using DATA directly works.

img2map give me like this:

msPostGISLayerWhichShapes query status: PGRES_TUPLES_OK (2)
msPostGISLayerWhichShapes got 1 records in result.
msPostGISLayerNextShape called.
msPostGISReadShape called.
msPostGISReadShape: PQgetlength = 86
msPostGISReadShape: [filename] "netcdf-filename.nc"
msPostGISReadShape: Setting shape->index = 5
msPostGISReadShape: Setting shape->resultindex = 0
msPostGISReadShape: [index] 5
msPostGISReadShape: [shape] POLYGON ((-2717181.7304994701407850 -5571048.1403121398761868, -2717181.7304994701407850 -1475048.1403121401090175, 1378818.2695005300920457 -1475048.1403121401090175, 1378818.2695005300920457 -5571048.1403121398761868, -2717181.7304994701407850 -5571048.1403121398761868))
msDrawRasterLayerLow(layer-name): Filename is: netcdf-filename.nc
msDrawRasterLayerLow(layer-name): Path is: netcdf-filename.nc
GDAL_netCDF: driver detected file type=3, libnetcdf detected type=3
GDAL_netCDF: var_count = 242
GDAL_netCDF: variable #26 [longitude] was ignored
GDAL_netCDF: variable #27 [latitude] was ignored
GDAL: GDALOpen(netcdf-filename.nc, this=0x56413c343280) succeeds as netCDF.
msResampleGDALToMap in effect: cellsize = 1.000000
msDrawGDAL(layer-name): using RAW_WINDOW=0 0 512 512, dst=0,0,512,512
msGetGDALBandList(): Image handling error. Attempt to operate on GDAL file with no bands, layer=layer-name.
GDAL: GDALClose(netcdf-filename.nc, this=0x56413c343280)
msPostGISLayerFreeItemInfo called.
msPostGISLayerClose called: geom from (select * from netcdf_data where product_variable='') as foo using unique id msConnPoolRelease(time_idx,host=10.88.0.3 user=postgres dbname=postgres port=5432 password=*********************************msConnPoolClose(host=10.88.0.3 user=postgres dbname=postgres port=5432 password=*********************************msDrawMap(): Image handling error. Failed to draw layer named 'layer-name'. msDrawMap(): Image handling error. Failed to draw layer named 'layer-name'. <br> msGetGDALBandList(): Image handling error. Attempt to operate on GDAL file with no bands, layer=layer-name. <br>
msFreeMap(): freeing map at 0x56413bee40a0.
freeLayer(): freeing layer at 0x56413bf67950.
msPostGISLayerIsOpen called.
freeLayer(): freeing layer at 0x56413bf68e50.
GDAL: In GDALDestroy - unloading GDAL shared library.


At least it detects the driver I think, but I still need to specify the variable.

Any ideas are appreciated or if you can point me to the part of the code that handles this.

Thanks!

Trygve Aspenes
_______________________________________________
MapServer-users mailing list
MapServer-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________
MapServer-users mailing list
MapServer-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to