@Override public GdalLayerData mapQuery( LayerQuery query, List<String> headers ) throws OWSException { Envelope bbox = query.getEnvelope(); return new GdalLayerData( datasets, bbox, query.getWidth(), query.getHeight(), gdalSettings ); }
@Override public RemoteWMSLayerData mapQuery( LayerQuery query, List<String> headers ) { Map<String, String> extraParams = new HashMap<String, String>(); replaceParameters( extraParams, query.getParameters(), defaultParametersGetMap, hardParametersGetMap ); ICRS crs = this.crs; if ( !alwaysUseDefaultCrs ) { ICRS envCrs = query.getEnvelope().getCoordinateSystem(); if ( client.getCoordinateSystems( originalName ).contains( envCrs.getAlias() ) ) { crs = envCrs; } } GetMap gm = new GetMap( singletonList( originalName ), query.getWidth(), query.getHeight(), query.getEnvelope(), crs, format, transparent ); return new RemoteWMSLayerData( client, gm, extraParams ); }
@Override public TileLayerData mapQuery( LayerQuery query, List<String> headers ) throws OWSException { Envelope env = query.getEnvelope(); ICRS crs = env.getCoordinateSystem(); String tds = coordinateSystems.get( crs ); if ( tds == null ) { String msg = "Tile layer " + getMetadata().getName() + " does not offer the coordinate system " + crs.getAlias(); LOG.debug( msg ); throw new OWSException( msg, OWSException.INVALID_CRS ); } TileDataSet data = tileDataSets.get( tds ); Iterator<Tile> tiles = data.getTiles( env, query.getResolution() ); return new TileLayerData( tiles ); }
@Override public RemoteWMSLayerData infoQuery( LayerQuery query, List<String> headers ) { Map<String, String> extraParams = new HashMap<String, String>(); replaceParameters( extraParams, query.getParameters(), defaultParametersGetFeatureInfo, hardParametersGetFeatureInfo ); ICRS crs = this.crs; if ( !alwaysUseDefaultCrs ) { ICRS envCrs = query.getEnvelope().getCoordinateSystem(); if ( client.getCoordinateSystems( originalName ).contains( envCrs.getAlias() ) ) { crs = envCrs; } } GetFeatureInfo gfi = new GetFeatureInfo( Collections.singletonList( originalName ), query.getWidth(), query.getHeight(), query.getX(), query.getY(), query.getEnvelope(), crs, query.getFeatureCount() ); return new RemoteWMSLayerData( client, gfi, extraParams ); }
@Override public CoverageLayerData mapQuery( LayerQuery query, List<String> headers ) throws OWSException { try { Envelope bbox = query.getEnvelope(); RangeSet filter = dimensionHandler.getDimensionFilter( query.getDimensions(), headers ); Style style = resolveStyleRef( query.getStyle() ); // handle SLD/SE scale settings style = style == null ? null : style.filter( query.getScale() ); Interpolation fromRequest = query.getRenderingOptions().getInterpolation( getMetadata().getName() ); InterpolationType interpol = determineInterpolation( fromRequest ); AbstractRaster raster = this.raster; if ( raster == null ) { raster = multiraster.getRaster( query.getResolution() ); } return new CoverageLayerData( raster, bbox, query.getWidth(), query.getHeight(), interpol, filter, style, getMetadata().getFeatureTypes().get( 0 ) ); } catch ( OWSException e ) { throw e; } catch ( Throwable e ) { LOG.warn( "Unable to prepare rendering of raster layer: {}", e.getLocalizedMessage() ); LOG.trace( "Stack trace:", e ); } return null; }