start("wcs:CoverageDescription", coverageAttributes); handleBoundedBy(envelope, axisSwap, srsName, axesLabel, dimensionsHelper); element("wcs:CoverageId", encodedId); handleCoverageFunction((GridEnvelope2D) reader.getOriginalGridRange(), axisSwap); handleMetadata(ci, dimensionsHelper); reader.getOriginalGridToWorld(PixelInCell.CELL_CENTER), reader.getCoordinateReferenceSystem()); handleDomainSet(gg, 2, encodedId, srsName, axisSwap); handleRangeType(ci.getDimensions()); handleServiceParameters(ci); end("wcs:CoverageDescription"); } catch (Exception e) { throw new WcsException(e);
NamespaceSupport namespaces = getNamespaceSupport(); namespaces.declarePrefix("swe", "http://www.opengis.net/swe/2.0"); namespaces.declarePrefix("wcsgs", "http://www.geoserver.org/wcsgs/2.0"); helper.registerNamespaces(getNamespaceSupport(), attributes); String location = buildSchemaLocation( request.getBaseUrl(), WCS.NAMESPACE, buildSchemaURL(request.getBaseUrl(), "wcs/2.0/wcsgs.xsd")); attributes.addAttribute("", "xsi:schemaLocation", "xsi:schemaLocation", "", location); start("wcs:CoverageDescriptions", attributes); int coverageIndex = 0; for (CoverageInfo ci : coverages) { newCoverageID = encodedId; handleCoverageDescription(newCoverageID, ciNew); coverageIndex++; } catch (Exception e) { end("wcs:CoverageDescriptions");
start("gmlcov:rangeType"); start("swe:DataRecord"); final AttributesImpl fieldAttr = new AttributesImpl(); fieldAttr.addAttribute("", "name", "name", "", sd.getName()); start("swe:field", fieldAttr); start("swe:Quantity"); start("swe:description"); chars(sd.getName()); // TODO can we make up something better?? end("swe:description"); handleSampleDimensionNilValues(null, noDataValues); final String unit = sd.getUnit(); uomAttr.addAttribute("", "code", "code", "", unit == null ? "W.m-2.Sr-1" : unit); start("swe:uom", uomAttr); end("swe:uom"); start("swe:constraint"); start("swe:AllowedValues"); handleSampleDimensionRange(sd); // TODO make this generic end("swe:AllowedValues"); end("swe:constraint"); end("swe:Quantity"); end("swe:field");
WCSDimensionsHelper timeHelper = new WCSDimensionsHelper(time, reader, datasetId); dcTranslator.encodeTimePeriod( timeHelper.getBeginTime(), timeHelper.getEndTime(),
private void encodeDatasetBounds(CoverageInfo ci, GridCoverage2DReader reader) throws IOException { // get the crs and look for an EPSG code final CoordinateReferenceSystem crs = ci.getCRS(); GeneralEnvelope envelope = reader.getOriginalEnvelope(); List<String> axesNames = envelopeAxisMapper.getAxesNames(envelope, true); // lookup EPSG code Integer EPSGCode = null; try { EPSGCode = CRS.lookupEpsgCode(crs, false); } catch (FactoryException e) { throw new IllegalStateException( "Unable to lookup epsg code for this CRS:" + crs, e); } if (EPSGCode == null) { throw new IllegalStateException("Unable to lookup epsg code for this CRS:" + crs); } final String srsName = GetCoverage.SRS_STARTER + EPSGCode; // handle axes swap for geographic crs final boolean axisSwap = CRS.getAxisOrder(crs).equals(AxisOrder.EAST_NORTH); final StringBuilder builder = new StringBuilder(); for (String axisName : axesNames) { builder.append(axisName).append(" "); } String axesLabel = builder.substring(0, builder.length() - 1); dcTranslator.handleBoundedBy(envelope, axisSwap, srsName, axesLabel, null); }
private void handleCoverageDescriptions(List<CoverageGranules> coverageGranules) { start("wcs:CoverageDescriptions"); for (CoverageGranules cg : coverageGranules) { SimpleFeatureIterator features = cg.granules.features(); try { while (features.hasNext()) { SimpleFeature f = features.next(); String granuleId = codec.getGranuleId(cg.coverage, f.getID()); dcTranslator.handleCoverageDescription( granuleId, new GranuleCoverageInfo(cg.coverage, f, cg.dimensionDescriptors)); } } finally { if (features != null) { features.close(); } } } end("wcs:CoverageDescriptions"); }
public WCS20DescribeCoverageTranslator createTranslator(ContentHandler handler) { return new WCS20DescribeCoverageTranslator(handler); }