[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