@Override public String getAttachmentFileName(Object value, Operation operation) { if (!(operation.getParameters()[0] instanceof GetCoverageType)) throw new WcsException( "Cannot handle object of type: " + operation.getParameters()[0].getClass()); GetCoverageType getCoverage = (GetCoverageType) operation.getParameters()[0]; String outputFormat = getCoverage.getOutput().getFormat().getValue(); CoverageResponseDelegate delegate = getResponseDelegate(outputFormat); return getCoverage.getSourceCoverage() + "." + delegate.getFileExtension(outputFormat); }
if (getCoverage.getSourceCoverage() == null) { if (kvp.get("coverage") == null) throw new WcsException( MissingParameterValue, "source coverage"); else getCoverage.setSourceCoverage((String) ((List) kvp.get("coverage")).get(0)); if (!getCoverage.isSetVersion()) throw new WcsException( "Version has not been specified", provided.add(Wcs10GetCoverageRequestReader.VERSION); List<String> accepted = null; if (getCoverage.getVersion() != null) { accepted = new ArrayList<String>(); accepted.add(getCoverage.getVersion()); getCoverage.setVersion(Wcs10GetCoverageRequestReader.VERSION); if (!getCoverage.isSetInterpolationMethod()) { getCoverage.setInterpolationMethod(parseInterpolation(kvp)); getCoverage.setDomainSubset(parseDomainSubset(kvp)); getCoverage.setRangeSubset(parseRangeSubset(kvp, getCoverage.getSourceCoverage())); getCoverage.setOutput(parseOutputElement(kvp));
assertEquals("WCS", gc.getService()); assertEquals("1.0.0", gc.getVersion()); assertEquals("nurc:Pk50095", gc.getSourceCoverage()); GeneralEnvelope envelope = ((GeneralEnvelope) gc.getDomainSubset().getSpatialSubset().getEnvelope().get(0)); assertEquals("EPSG:32633", CRS.lookupIdentifier(envelope.getCoordinateReferenceSystem(),true)); assertEquals(347649.93086859107, envelope.getLowerCorner().getOrdinate(0)); assertEquals(370725.976428591, envelope.getUpperCorner().getOrdinate(0)); assertEquals(5196961.352859256, envelope.getUpperCorner().getOrdinate(1)); assertNotNull(gc.getOutput().getCrs()); assertEquals("EPSG:4326", gc.getOutput().getCrs().getValue()); assertNotNull(gc.getOutput().getFormat()); assertEquals("TIFF", gc.getOutput().getFormat().getValue());
meta = catalog.getCoverageByName(request.getSourceCoverage()); if (meta == null) throw new WcsException( "Cannot find sourceCoverage " + request.getSourceCoverage() + " in the catalog!"); checkRangeSubset(meta, request.getRangeSubset()); checkInterpolationMethod(meta, request.getInterpolationMethod()); checkOutput(meta, request.getOutput()); final DomainSubsetType domainSubset = request.getDomainSubset(); final OutputType output = request.getOutput(); if (output == null) throw new IllegalArgumentException("Output type was null"); final CodeType outputCRS = output.getCrs(); if (request.getRangeSubset() != null) { axisSubset = request.getRangeSubset().getAxisSubset(); if (axisSubset.size() > 0) { for (int a = 0; a < axisSubset.size(); a++) { if (request.getRangeSubset() != null) { EList<?> axisSubset = request.getRangeSubset().getAxisSubset(); final int asCount = axisSubset == null ? 0 : axisSubset.size(); for (int i = 0; i < asCount; i++) { if (request.getInterpolationMethod() != null) { interpolationType = request.getInterpolationMethod().getLiteral();
assertEquals(layerId, getCoverage.getSourceCoverage()); assertEquals("image/tiff", getCoverage.getOutput().getFormat().getValue()); assertEquals("nearest neighbor", getCoverage.getInterpolationMethod().toString()); assertEquals(layerId, getCoverage.getSourceCoverage()); assertEquals("image/tiff", getCoverage.getOutput().getFormat().getValue()); assertEquals("bilinear", getCoverage.getInterpolationMethod().toString()); assertEquals(layerId, getCoverage.getSourceCoverage()); assertEquals("image/tiff", getCoverage.getOutput().getFormat().getValue()); assertEquals("nearest neighbor", getCoverage.getInterpolationMethod().toString()); assertEquals(layerId, getCoverage.getSourceCoverage()); assertEquals("image/tiff", getCoverage.getOutput().getFormat().getValue());
@Test public void testWCS10GetCoverageDifferentCrs() throws Exception { //xMin,yMin 5988504.35,851278.90 : xMax,yMax 7585113.55,1950872.01 //xMin,yMin -95.1193,42.2802 : xMax,yMax -71.295,53.73 GetCoverageType gc = Wcs10Factory.eINSTANCE.createGetCoverageType(); net.opengis.wcs10.SpatialSubsetType spatialSubset = Wcs10Factory.eINSTANCE.createSpatialSubsetType(); CoordinateReferenceSystem crs = CRS.decode("EPSG:3348", false); CoordinateReferenceSystem logCrs = CRS.decode("EPSG:4326", false); GeneralEnvelope env = new GeneralEnvelope(new double[]{5988504.35, 851278.90}, new double[]{7585113.55,1950872.01}); env.setCoordinateReferenceSystem(crs); BoundingBox bbox = new ReferencedEnvelope(42.2802, 53.73, -95.1193, -71.295, logCrs); spatialSubset.getEnvelope().clear(); spatialSubset.getEnvelope().add(env); net.opengis.wcs10.DomainSubsetType domainSubset = Wcs10Factory.eINSTANCE.createDomainSubsetType(); domainSubset.setSpatialSubset(spatialSubset); gc.setSourceCoverage("acme:foo"); gc.setDomainSubset(domainSubset); callback.operationDispatched(new Request(), op("GetCoverage", "WCS", "1.0.0", gc)); assertEquals("acme:foo", data.getResources().get(0)); BBoxAsserts.assertEqualsBbox(bbox, data.getBbox(), 0.1); }
assertEquals(1, gc.getRangeSubset().getAxisSubset().size()); GridType grid = (GridType) gc.getDomainSubset().getSpatialSubset().getGrid().get(0); assertEquals(grid.getSrsName(), "EPSG:4326"); assertEquals(grid.getAxisName().get(0), "Column"); assertEquals(489, gridLimits.getHigh(1)); RangeSubsetType rangeSet = gc.getRangeSubset(); AxisSubsetType axisSubset = (AxisSubsetType) rangeSet.getAxisSubset().get(0); assertEquals("Band", axisSubset.getName());
@Override public void write(Object value, OutputStream output, Operation operation) throws IOException, ServiceException { GridCoverage[] coverages = (GridCoverage[]) value; // grab the delegate for coverage encoding GetCoverageType request = (GetCoverageType) operation.getParameters()[0]; String outputFormat = request.getOutput().getFormat().getValue(); CoverageResponseDelegate delegate = getResponseDelegate(outputFormat); // grab the coverage info for Coverages document encoding final GridCoverage2D coverage = (GridCoverage2D) coverages[0]; // ImageIOUtilities.visualize(coverage.getRenderedImage()); // write the coverage try { delegate.encode(coverage, outputFormat, Collections.EMPTY_MAP, output); output.flush(); } finally { // if(output != null) output.close(); } } }
@Override protected void qualifyRequest( WorkspaceInfo ws, PublishedInfo l, Operation operation, Request request) { GetCapabilitiesType caps = parameter(operation, GetCapabilitiesType.class); if (caps != null) { return; } DescribeCoverageType dcov = parameter(operation, DescribeCoverageType.class); if (dcov != null) { qualifyLayerNames(dcov.getCoverage(), ws); return; } GetCoverageType gcov = parameter(operation, GetCoverageType.class); if (gcov != null) { qualifyName(gcov.getSourceCoverage(), ws); } } }
assertEquals("WCS", gc.getService()); assertEquals("1.0.0", gc.getVersion()); assertEquals("nurc:Pk50095", gc.getSourceCoverage()); ((GeneralEnvelope) gc.getDomainSubset().getSpatialSubset().getEnvelope().get(0)); assertEquals( "EPSG:32633", CRS.lookupIdentifier(envelope.getCoordinateReferenceSystem(), true)); assertEquals(370725.976428591, envelope.getUpperCorner().getOrdinate(0), 0); assertEquals(5196961.352859256, envelope.getUpperCorner().getOrdinate(1), 0); assertNotNull(gc.getOutput().getCrs()); assertEquals("EPSG:4326", gc.getOutput().getCrs().getValue()); assertNotNull(gc.getOutput().getFormat()); assertEquals("TIFF", gc.getOutput().getFormat().getValue());
assertEquals(layerId, getCoverage.getSourceCoverage()); assertEquals("image/tiff", getCoverage.getOutput().getFormat().getValue()); assertEquals("nearest neighbor", getCoverage.getInterpolationMethod().toString()); assertEquals(layerId, getCoverage.getSourceCoverage()); assertEquals("image/tiff", getCoverage.getOutput().getFormat().getValue()); assertEquals("bilinear", getCoverage.getInterpolationMethod().toString()); assertEquals(layerId, getCoverage.getSourceCoverage()); assertEquals("image/tiff", getCoverage.getOutput().getFormat().getValue()); assertEquals("nearest neighbor", getCoverage.getInterpolationMethod().toString()); assertEquals(layerId, getCoverage.getSourceCoverage()); assertEquals("image/tiff", getCoverage.getOutput().getFormat().getValue()); assertEquals("bicubic", getCoverage.getInterpolationMethod().toString());
@Test public void testWCS10GetCoverage() throws Exception { GetCoverageType gc = Wcs10Factory.eINSTANCE.createGetCoverageType(); net.opengis.wcs10.SpatialSubsetType spatialSubset = Wcs10Factory.eINSTANCE.createSpatialSubsetType(); CoordinateReferenceSystem crs = CRS.decode("EPSG:4326"); GeneralEnvelope env = new GeneralEnvelope(new double[]{-123.4, 48.2}, new double[]{-120.9, 50.1}); env.setCoordinateReferenceSystem(crs); BoundingBox bbox = new ReferencedEnvelope(env); spatialSubset.getEnvelope().clear(); spatialSubset.getEnvelope().add(env); net.opengis.wcs10.DomainSubsetType domainSubset = Wcs10Factory.eINSTANCE.createDomainSubsetType(); domainSubset.setSpatialSubset(spatialSubset); gc.setSourceCoverage("acme:foo"); gc.setDomainSubset(domainSubset); callback.operationDispatched(new Request(), op("GetCoverage", "WCS", "1.0.0", gc)); assertEquals("acme:foo", data.getResources().get(0)); BBoxAsserts.assertEqualsBbox(bbox, data.getBbox(), 0.1); }
assertEquals(1, gc.getRangeSubset().getAxisSubset().size()); GridType grid = (GridType) gc.getDomainSubset().getSpatialSubset().getGrid().get(0); assertEquals(grid.getSrsName(), "EPSG:4326"); assertEquals(grid.getAxisName().get(0), "Column"); assertEquals(489, gridLimits.getHigh(1)); RangeSubsetType rangeSet = gc.getRangeSubset(); AxisSubsetType axisSubset = (AxisSubsetType) rangeSet.getAxisSubset().get(0); assertEquals("Band", axisSubset.getName());
@Override public String getMimeType(Object value, Operation operation) throws ServiceException { if (!(operation.getParameters()[0] instanceof GetCoverageType)) throw new WcsException( "Cannot handle object of type: " + operation.getParameters()[0].getClass()); GetCoverageType getCoverage = (GetCoverageType) operation.getParameters()[0]; String outputFormat = getCoverage.getOutput().getFormat().getValue(); CoverageResponseDelegate delegate = getResponseDelegate(outputFormat); return delegate.getMimeType(outputFormat); }
@Test public void testWCS10GetCoverage() throws Exception { GetCoverageType gc = Wcs10Factory.eINSTANCE.createGetCoverageType(); net.opengis.wcs10.SpatialSubsetType spatialSubset = Wcs10Factory.eINSTANCE.createSpatialSubsetType(); CoordinateReferenceSystem crs = CRS.decode("EPSG:4326"); GeneralEnvelope env = new GeneralEnvelope(new double[] {-123.4, 48.2}, new double[] {-120.9, 50.1}); env.setCoordinateReferenceSystem(crs); BoundingBox bbox = new ReferencedEnvelope(env); spatialSubset.getEnvelope().clear(); spatialSubset.getEnvelope().add(env); net.opengis.wcs10.DomainSubsetType domainSubset = Wcs10Factory.eINSTANCE.createDomainSubsetType(); domainSubset.setSpatialSubset(spatialSubset); gc.setSourceCoverage("acme:foo"); gc.setDomainSubset(domainSubset); callback.operationDispatched(new Request(), op("GetCoverage", "WCS", "1.0.0", gc)); assertEquals("acme:foo", data.getResources().get(0)); BBoxAsserts.assertEqualsBbox(bbox, data.getBbox(), 0.1); }
public void testBasic() throws Exception { Map<String, Object> raw = baseMap(); final String layerId = getLayerId(TASMANIA_BM); raw.put("SourceCoverage", layerId); raw.put("version", "1.0.0"); raw.put("format", "image/tiff"); raw.put("BBOX", "-45,146,-42,147"); raw.put("CRS", "EPSG:4326"); raw.put("width", "150"); raw.put("height", "150"); GetCoverageType getCoverage = (GetCoverageType) reader.read(reader.createRequest(), parseKvp(raw), raw); assertEquals(layerId, getCoverage.getSourceCoverage()); assertEquals("image/tiff", getCoverage.getOutput().getFormat().getValue()); assertEquals("EPSG:4326", getCoverage.getOutput().getCrs().getValue()); }
@Override public boolean canHandle(Operation operation) { if (!(operation.getParameters()[0] instanceof GetCoverageType)) return false; GetCoverageType getCoverage = (GetCoverageType) operation.getParameters()[0]; String outputFormat = getCoverage.getOutput().getFormat().getValue(); CoverageResponseDelegate delegate = getResponseDelegate(outputFormat); return delegate.canProduce(outputFormat); }
@Test public void testWCS10GetCoverageDifferentCrs() throws Exception { // xMin,yMin 5988504.35,851278.90 : xMax,yMax 7585113.55,1950872.01 // xMin,yMin -95.1193,42.2802 : xMax,yMax -71.295,53.73 GetCoverageType gc = Wcs10Factory.eINSTANCE.createGetCoverageType(); net.opengis.wcs10.SpatialSubsetType spatialSubset = Wcs10Factory.eINSTANCE.createSpatialSubsetType(); CoordinateReferenceSystem crs = CRS.decode("EPSG:3348", false); CoordinateReferenceSystem logCrs = CRS.decode("EPSG:4326", false); GeneralEnvelope env = new GeneralEnvelope( new double[] {5988504.35, 851278.90}, new double[] {7585113.55, 1950872.01}); env.setCoordinateReferenceSystem(crs); BoundingBox bbox = new ReferencedEnvelope(42.2802, 53.73, -95.1193, -71.295, logCrs); spatialSubset.getEnvelope().clear(); spatialSubset.getEnvelope().add(env); net.opengis.wcs10.DomainSubsetType domainSubset = Wcs10Factory.eINSTANCE.createDomainSubsetType(); domainSubset.setSpatialSubset(spatialSubset); gc.setSourceCoverage("acme:foo"); gc.setDomainSubset(domainSubset); callback.operationDispatched(new Request(), op("GetCoverage", "WCS", "1.0.0", gc)); assertEquals("acme:foo", data.getResources().get(0)); BBoxAsserts.assertEqualsBbox(bbox, data.getBbox(), 0.1); }
@Test public void testBasic() throws Exception { Map<String, Object> raw = baseMap(); final String layerId = getLayerId(TASMANIA_BM); raw.put("SourceCoverage", layerId); raw.put("version", "1.0.0"); raw.put("format", "image/tiff"); raw.put("BBOX", "-45,146,-42,147"); raw.put("CRS", "EPSG:4326"); raw.put("width", "150"); raw.put("height", "150"); GetCoverageType getCoverage = (GetCoverageType) reader.read(reader.createRequest(), parseKvp(raw), raw); assertEquals(layerId, getCoverage.getSourceCoverage()); assertEquals("image/tiff", getCoverage.getOutput().getFormat().getValue()); assertEquals("EPSG:4326", getCoverage.getOutput().getCrs().getValue()); }