Conditional BANDS directive based on underlying data

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Conditional BANDS directive based on underlying data

Peter Schmitt
Hi,

When my data is 4-band (BGRN), I use the BANDS processing directive to yield RGB tiles, like so: 

    PROCESSING    "BANDS=4,3,2" 

Is there a way to have a single layer within a Mapfile that will set this directive to 4,3,2 when the underlying data has four bands and either skip the directive or set it to 1,2,3 when the underlying data is 3-band?

The only thing I can think of is it to try runtime substitution, where my request might include the band order like "REQUEST=WMS&the_band_order=4,3,2&...." and then configure my mapfile accordingly:

    PROCESSING    "BANDS=%the_band_order%" 

Is there another way which doesn't require the client to know about the underlying data?  FWIW, my ultimate use-case serves mosaics using a tile index generated from Postgis. The Postgis table could have a column storing the band information, but I'm not sure how to extract that in my LAYER/BANDS Processing directive.

Thanks! 
Pete


_______________________________________________
mapserver-users mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/mapserver-users
Reply | Threaded
Open this post in threaded view
|

Re: Conditional BANDS directive based on underlying data

Even Rouault-2
On lundi 29 avril 2019 10:40:32 CEST Peter Schmitt wrote:

> Hi,
>
> When my data is 4-band (BGRN), I use the BANDS processing directive to
> yield RGB tiles, like so:
>
>     PROCESSING    "BANDS=4,3,2"
>
> Is there a way to have a single layer within a Mapfile that will set this
> directive to 4,3,2 when the underlying data has four bands and either skip
> the directive or set it to 1,2,3 when the underlying data is 3-band?
>
> The only thing I can think of is it to try runtime substitution, where my
> request might include the band order like
> "REQUEST=WMS&the_band_order=4,3,2&...." and then configure my mapfile
> accordingly:
>
>     PROCESSING    "BANDS=%the_band_order%"
>
> Is there another way which doesn't require the client to know about the
> underlying data?  FWIW, my ultimate use-case serves mosaics using a tile
> index generated from Postgis. The Postgis table could have a column storing
> the band information, but I'm not sure how to extract that in my
> LAYER/BANDS Processing directive.

Use a VRT that does the band reordering, and use it in your tile index.

Even

--
Spatialys - Geospatial professional services
http://www.spatialys.com
_______________________________________________
mapserver-users mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/mapserver-users