The solution I arrived at was to use the ImageMosaic plugin versus the ImageMosaicJDBC plugin. The setup was simple and it allowed querying based on a number of parameters that I could setup in PostgreSQL / PostGIS. Other reasons include:
- ImageMosaic allows for more intuitive queries and less database overhead. The ImageMosaicJDBC plugin requires a pyramid structure which is not intuitive.
- The raster files are stored in their raw, original format if they're supported by the ImageMosaic plugin. ImageMosaicJDBC required a converted raster to an intermediary format in the database.
- No additional setup required both from Geoserver, since the ImageMosaic plugin is included, and by the DBMS (in my case, PostgreSQL / PostGIS) because ImageMosaic automatically creates the requires data structures.
- Increases performance because Geoserver pulls the raster data from its own directory instead of querying and downloading the raster data from the database.
Please note that it was required for me to set preparedStatements to false in my indexer.properties file to allow cql_filter to work
Although there are other guides out there, I used the ones provided by Geoserver,
- http://docs.geoserver.org/stable/en/user/tutorials/imagemosaic_timeseries/imagemosaic_timeseries.html
- http://docs.geoserver.org/stable/en/user/tutorials/imagemosaic_timeseries/imagemosaic_time-elevationseries.html
Here are additional references that helped me with this solution,