public void addSRS(CoordinateReferenceSystem crs) { if (srs == null) { srs = new HashSet<>(); } srs.addAll(extractCRSNames(crs)); }
@Override public void setLayer(WMTSLayer layer) { this.layer = layer; if (styleName.isEmpty()) { StyleImpl defaultStyle = layer.getDefaultStyle(); if (defaultStyle != null) { styleName = defaultStyle.getName(); } } }
/** * Returns the layer bounds * * @return */ public void updateBounds() { if (LOGGER.isLoggable(Level.FINER)) LOGGER.entering("WMTSCoverage", "updatingBounds"); GeneralEnvelope envelope = layer.getEnvelope(requestCRS); ReferencedEnvelope result = reference(envelope); if (LOGGER.isLoggable(Level.FINE)) LOGGER.fine("setting bounds to " + result); this.bounds = result; this.originalEnvelope = new GeneralEnvelope(result); }
private WMTSLayer parseLayer(LayerType layerType) { String title = ((LanguageStringType) layerType.getTitle().get(0)).getValue(); WMTSLayer layer = new WMTSLayer(title); layer.setName(layerType.getIdentifier().getValue()); EList<TileMatrixSetLinkType> tmsLinks = layerType.getTileMatrixSetLink(); for (TileMatrixSetLinkType linkType : tmsLinks) { layer.addTileMatrixLink(link); layer.getFormats().addAll(layerType.getFormat()); layer.getInfoFormats().addAll(layerType.getInfoFormat()); EList<StyleType> styles = layerType.getStyle(); List<StyleImpl> sList = new ArrayList<>(); style.setDefault(styleType.isIsDefault()); if (styleType.isIsDefault()) { layer.setDefaultStyle(style); layer.setStyles(sList); @SuppressWarnings("unchecked") EList<BoundingBoxType> bboxes = layerType.getBoundingBox(); layer.setLatLonBoundingBox(boundingBoxes.get("CRS:84")); layer.setBoundingBoxes(boundingBoxes); EList<URLTemplateType> resourceURL = layerType.getResourceURL(); if (resourceURL != null && !resourceURL.isEmpty()) { layer.putResourceURL(format, template);
WMTSLayer layer = parseLayer(layerType); layers.add(layer); layerMap.put(layer.getName(), layer); Map<String, TileMatrixSetLink> tileMatrixLinks = wmtsLayer.getTileMatrixLinks(); if (wmtsLayer.getLatLonBoundingBox() != null) { ReferencedEnvelope wgs84Env = new ReferencedEnvelope(wmtsLayer.getLatLonBoundingBox()); wmtsLayer.getBoundingBoxes().put("EPSG:4326", new CRSEnvelope(wgs84Env)); } else { ReferencedEnvelope wgs84re = re.transform(DefaultGeographicCRS.WGS84, true); wmtsLayer.setLatLonBoundingBox(new CRSEnvelope(wgs84re)); break; } catch (Exception ex) { if (wmtsLayer.getLatLonBoundingBox() == null) { ReferencedEnvelope wgs84Env = new ReferencedEnvelope(wmtsLayer.getLatLonBoundingBox()); wmtsLayer.setPreferredCRS(tmsCRS); // the preferred crs is just if (wmtsLayer.getBoundingBoxes().containsKey(crsCode)) { if (LOGGER.isLoggable(Level.FINE)) LOGGER.fine( wmtsLayer.getBoundingBoxes().put(crsCode, tms.getBbox());
layerString = URLEncoder.encode(layer.getName(), "UTF-8").replaceAll("\\+", "%20"); } catch (UnsupportedEncodingException | NullPointerException e) { layerString = layerString + layer.getName(); LOGGER.fine("Format not set, trying with " + format); requestUrl = layer.getTemplate(format); if (requestUrl == null) { if (LOGGER.isLoggable(Level.INFO)) LOGGER.info("Template URL not available for format " + format); format = layer.getFormats().get(0); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine( "Available formats: " + layer.getFormats() + " -- Selecting " + format); requestUrl = layer.getTemplate(format); int z = first.getTileIdentifier().getZ(); TileMatrixSetLink tmsl = layer.getTileMatrixLinks().get(matrixSet.getIdentifier()); TileMatrixLimits limit = WMTSTileFactory.getLimits(tmsl, matrixSet, z);
this.tileMatrixSetName = tileMatrixSet.getIdentifier(); this.envelope = new ReferencedEnvelope(layer.getLatLonBoundingBox()); setLayerName(layer.getName()); if (styleName != null && !styleName.isEmpty()) { setStyleName(styleName); } else { StyleImpl defaultStyle = layer.getDefaultStyle(); if (defaultStyle != null) { setStyleName(defaultStyle.getName());
void handleWMTSLayerDimensions(LayerInfo layerInfo) { try { // do we have time? WMTSLayerInfo wli = (WMTSLayerInfo) layerInfo.getResource(); WMTSLayer wl = (WMTSLayer) wli.getWMTSLayer(null); for (String dimName : wl.getDimensions().keySet()) { if (TIME.equalsIgnoreCase(dimName)) { Dimension timeDimension = wl.getDimension(dimName); if (mode == Mode.WMS11) { declareWMS11Dimensions(true, false, null, null, null); } Extent extent = timeDimension.getExtent(); writeTimeDimension( extent.getValue(), extent.getDefaultValue(), extent.getNearestValue()); } else { // TODO: custom dimension handling LOGGER.log( Level.WARNING, "Skipping custom dimension " + dimName + " in layer " + layerInfo.getName()); } } } catch (IOException ex) { LOGGER.log(Level.WARNING, "Error handling WMTS time dimension", ex); } }
/** * Builds a new WMS coverage reader * * @param server * @param layer */ public WMTSCoverageReader(WebMapTileServer server, org.geotools.data.ows.Layer layer) { this.wmts = server; // init the reader setLayer(layer); // best guess at the format with a preference for PNG (since it's // normally transparent) List<String> formats = ((WMTSLayer) layer) .getFormats(); // wms2.getCapabilities().getRequest().getGetTile().getFormats(); this.format = formats.iterator().next(); for (String f : formats) { if ("image/png".equals(f) || "image/png24".equals(f) || "png".equals(f) || "png24".equals(f) || "image/png; mode=24bit".equals(f)) { this.format = f; break; } } }