void writeLayers( List<Theme> themes, Set<TileMatrixSet> matrixSets ) throws XMLStreamException { for ( Theme t : themes ) { for ( Layer l : Themes.getAllLayers( t ) ) { if ( l instanceof TileLayer ) { exportLayer( matrixSets, (TileLayer) l ); } } } }
TileHandler( List<Theme> themes ) { layers = new HashMap<String, TileLayer>(); for ( Theme theme : themes ) { for ( Layer l : Themes.getAllLayers( theme ) ) { if ( l instanceof TileLayer ) { layers.put( l.getMetadata().getName(), ( (TileLayer) l ) ); } } } }
private void getFeatureTypes( Collection<FeatureType> types, String name ) { for ( org.deegree.layer.Layer l : Themes.getAllLayers( themeMap.get( name ) ) ) { types.addAll( l.getMetadata().getFeatureTypes() ); } }
/** * @param t * @return all layers contained in this theme and subthemes */ public static List<Layer> getAllLayers( Theme t ) { List<Layer> list = new ArrayList<Layer>(); if ( t == null ) { return list; } list.addAll( t.getLayers() ); for ( Theme c : t.getThemes() ) { list.addAll( getAllLayers( c ) ); } return list; }
FeatureInfoHandler( FeatureInfoFormatsType conf, ResourceLocation<?> location, Workspace workspace, List<Theme> themes ) throws ResourceInitException { featureInfoManager = FeatureInfoManagerBuilder.buildFeatureInfoManager( conf, location, workspace ); layers = new HashMap<String, TileLayer>(); for ( Theme theme : themes ) { for ( Layer l : Themes.getAllLayers( theme ) ) { if ( l instanceof TileLayer ) { layers.put( l.getMetadata().getName(), ( (TileLayer) l ) ); } } } }
private SpatialMetadata mergeSpatialMetadata( List<Theme> themes ) { if ( themes.isEmpty() ) return null; SpatialMetadata smd = new SpatialMetadata(); for ( Theme t : themes ) { for ( org.deegree.layer.Layer l : Themes.getAllLayers( t ) ) { smd.merge( l.getMetadata().getSpatialMetadata() ); } } return smd; }
themeMap.put( thm.getLayerMetadata().getName(), thm ); for ( org.deegree.layer.Layer l : Themes.getAllLayers( thm ) ) { newLayers.put( l.getMetadata().getName(), l );
final List<Layer> layers = Themes.getAllLayers( theme ); if ( layers != null ) { for ( final Layer layer : layers ) {
private void writeThemes( XMLStreamWriter writer, List<Theme> themes ) throws XMLStreamException { if ( themes.size() == 1 ) { themeWriter.writeTheme( writer, themes.get( 0 ) ); } else { // synthetic root layer needed writer.writeStartElement( "Layer" ); writeElement( writer, "Title", "Root" ); // TODO think about a push approach instead of a pull approach LayerMetadata lmd = null; for ( Theme t : themes ) { for ( org.deegree.layer.Layer l : Themes.getAllLayers( t ) ) { if ( lmd == null ) { lmd = l.getMetadata(); } else { lmd.merge( l.getMetadata() ); } } } if ( lmd != null ) { SpatialMetadata smd = lmd.getSpatialMetadata(); writeSrsAndEnvelope( writer, smd.getCoordinateSystems(), smd.getEnvelope() ); } for ( Theme t : themes ) { themeWriter.writeTheme( writer, t ); } writer.writeEndElement(); } }
private List<LayerData> checkStyleValidAndBuildLayerDataList( org.deegree.protocol.wms.ops.GetMap gm, List<String> headers, double scale, ListIterator<LayerQuery> queryIter ) throws OWSException { List<LayerData> layerDataList = new ArrayList<LayerData>(); for ( LayerRef lr : gm.getLayers() ) { LayerQuery query = queryIter.next(); List<Layer> layers = getAllLayers( themeMap.get( lr.getName() ) ); assertStyleApplicableForAtLeastOneLayer( layers, query.getStyle(), lr.getName() ); for ( org.deegree.layer.Layer layer : layers ) { if ( layer.getMetadata().getScaleDenominators().first > scale || layer.getMetadata().getScaleDenominators().second < scale ) { continue; } if ( layer.isStyleApplicable( query.getStyle() ) ) { layerDataList.add( layer.mapQuery( query, headers ) ); } } } return layerDataList; }
private String getFirstMetadataSetId( final Theme theme ) { if ( theme.getLayerMetadata().getMetadataId() != null ) { return theme.getLayerMetadata().getMetadataId(); } for ( final Layer layer : getAllLayers( theme ) ) { if ( layer.getMetadata().getMetadataId() != null ) { return layer.getMetadata().getMetadataId(); } } return null; }
for ( LayerRef n : gfi.getQueryLayers() ) { LayerQuery query = queryIter.next(); for ( org.deegree.layer.Layer l : Themes.getAllLayers( themeMap.get( n.getName() ) ) ) { if ( l.getMetadata().getScaleDenominators().first > scale || l.getMetadata().getScaleDenominators().second < scale ) {
private LayerQuery buildQuery( StyleRef style, LayerRef lr, MapOptionsMaps options, List<MapOptions> mapOptions, OperatorFilter f, org.deegree.protocol.wms.ops.GetMap gm ) { for ( org.deegree.layer.Layer l : Themes.getAllLayers( themeMap.get( lr.getName() ) ) ) { insertMissingOptions( l.getMetadata().getName(), options, l.getMetadata().getMapOptions(), defaultLayerOptions ); mapOptions.add( options.get( l.getMetadata().getName() ) ); } LayerQuery query = new LayerQuery( gm.getBoundingBox(), gm.getWidth(), gm.getHeight(), style, f, gm.getParameterMap(), gm.getDimensions(), gm.getPixelSize(), options, gm.getQueryBox() ); return query; }
/** * Returns the combined layer metadata for the given theme/sublayers. * * @see LayerMetadata#merge(LayerMetadata) * * @param theme * must not be <code>null</code> * @return combined layer metadata, never <code>null</code> */ LayerMetadata merge( final Theme theme ) { final LayerMetadata themeMetadata = theme.getLayerMetadata(); LayerMetadata layerMetadata = new LayerMetadata( null, null, null ); int queryable = 0; boolean opaque = false; int cascaded = 0; for ( final Layer l : Themes.getAllLayers( theme ) ) { queryable |= analyseQueryable( l.getMetadata() ); if ( checkIfOpaque( l.getMetadata() ) ) opaque = true; if ( checkIfLargerCascadedValue( cascaded, l.getMetadata() ) ) cascaded = l.getMetadata().getCascaded(); layerMetadata.merge( l.getMetadata() ); } themeMetadata.merge( layerMetadata ); adjustMapOptions( themeMetadata, queryable, opaque, cascaded ); return themeMetadata; }