[MapServer-users] Handeling gdal driver via tileitem for raster

Trygve Aspenes trygve at aspenes.priv.no
Thu Sep 28 09:25:03 PDT 2023


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 at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/mapserver-users


More information about the MapServer-users mailing list