public void testWorkspaceQualified() throws Exception { String queryString ="&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42"+ "&crs=EPSG:4326&width=150&height=150"; ServletResponse response = getAsServletResponse( "wcs?sourcecoverage="+TASMANIA_BM.getLocalPart()+queryString); assertTrue(response.getContentType().startsWith("image/tiff")); Document dom = getAsDOM( "cdf/wcs?sourcecoverage="+TASMANIA_BM.getLocalPart()+queryString); assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); }
public void testRasterFilterRed() throws Exception { String queryString = "wcs?sourcecoverage=" + getLayerId(MOSAIC) + "&request=getcoverage" + "&service=wcs&version=1.0.0&format=image/tiff&crs=EPSG:4326" + "&bbox=0,0,1,1&CQL_FILTER=location like 'red%25'&width=150&height=150"; MockHttpServletResponse response = getAsServletResponse(queryString); RenderedImage image = readTiff(response); // check the pixel int[] pixel = new int[3]; image.getData().getPixel(0, 0, pixel); assertEquals(255, pixel[0]); assertEquals(0, pixel[1]); assertEquals(0, pixel[2]); }
public void testRasterFilterGreen() throws Exception { String queryString = "wcs?sourcecoverage=" + getLayerId(MOSAIC) + "&request=getcoverage" + "&service=wcs&version=1.0.0&&format=image/tiff&crs=EPSG:4326" + "&bbox=0,0,1,1&CQL_FILTER=location like 'green%25'&width=150&height=150"; MockHttpServletResponse response = getAsServletResponse(queryString); // make sure we can read the coverage back RenderedImage image = readTiff(response); // check the pixel int[] pixel = new int[3]; image.getData().getPixel(0, 0, pixel); assertEquals(0, pixel[0]); assertEquals(255, pixel[1]); assertEquals(0, pixel[2]); }
public void testLayerQualified() throws Exception { String queryString ="&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42"+ "&crs=EPSG:4326&width=150&height=150"; ServletResponse response = getAsServletResponse( "wcs/BlueMarble/wcs?sourcecoverage=BlueMarble"+queryString); assertTrue(response.getContentType().startsWith("image/tiff")); Document dom = getAsDOM( "wcs/DEM/wcs?sourcecoverage=BlueMarble"+queryString); assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); }
/** * Compare two grid to world transformations * @param expectedTx * @param tx */ private static void compareGrid2World(AffineTransform2D expectedTx, AffineTransform2D tx) { assertEquals("scalex",tx.getScaleX(), expectedTx.getScaleX(), 1E-6); assertEquals("scaley",tx.getScaleY(), expectedTx.getScaleY(), 1E-6); assertEquals("shearx",tx.getShearX(), expectedTx.getShearX(), 1E-6); assertEquals("sheary",tx.getShearY(), expectedTx.getShearY(), 1E-6); assertEquals("translatex",tx.getTranslateX(), expectedTx.getTranslateX(), 1E-6); assertEquals("translatey",tx.getTranslateY(), expectedTx.getTranslateY(), 1E-6); }
public void testInputLimits() throws Exception { try { // ridicolous limit, just one byte setInputLimit(1); String queryString = "&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42" + "&crs=EPSG:4326&width=150&height=150"; Document dom = getAsDOM("wcs/BlueMarble/wcs?sourcecoverage=" + getLayerId(TASMANIA_BM) + queryString); // print(dom); // check it's an error, check we're getting it because of the input limits assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); String error = xpath.evaluate( "/ServiceExceptionReport/ServiceException/text()", dom).trim(); assertTrue(error.matches(".*read too much data.*")); } finally { setInputLimit(0); } }
private void checkTimeFirst(MockHttpServletResponse response) throws IOException, FileNotFoundException, DataSourceException { // save File tiffFile = File.createTempFile("wcs", "", new File("target")); IOUtils.copy(getBinaryInputStream(response), new FileOutputStream(tiffFile)); // make sure we can read the coverage back GeoTiffReader reader = new GeoTiffReader(tiffFile); GridCoverage2D result = reader.read(null); /* gdallocationinfo NCOM_wattemp_000_20081031T0000000_12.tiff 10 10 Report: Location: (10P,10L) Band 1: Value: 18.2659999176394 */ // check a pixel double[] pixel = new double[1]; result.getRenderedImage().getData().getPixel(10, 10, pixel); assertEquals(18.2659999176394, pixel[0], 1e-6); tiffFile.delete(); }
private void checkTimeCurrent(MockHttpServletResponse response) throws IOException, FileNotFoundException, DataSourceException { // save File tiffFile = File.createTempFile("wcs", "", new File("target")); IOUtils.copy(getBinaryInputStream(response), new FileOutputStream(tiffFile)); // make sure we can read the coverage back GeoTiffReader reader = new GeoTiffReader(tiffFile); GridCoverage2D result = reader.read(null); /* gdallocationinfo NCOM_wattemp_000_20081101T0000000_12.tiff 10 10 Report: Location: (10P,10L) Band 1: Value: 18.2849999185419 */ // check a pixel double[] pixel = new double[1]; result.getRenderedImage().getData().getPixel(10, 10, pixel); assertEquals(18.2849999185419, pixel[0], 1e-6); tiffFile.delete(); }
public void testOutputLimits() throws Exception { try { // ridicolous limit, just one byte setOutputLimit(1); String queryString = "&request=getcoverage&service=wcs&version=1.0.0&format=image/geotiff&bbox=146,-45,147,-42" + "&crs=EPSG:4326&width=150&height=150"; Document dom = getAsDOM("wcs/BlueMarble/wcs?sourcecoverage=" + getLayerId(TASMANIA_BM) + queryString); // print(dom); // check it's an error, check we're getting it because of the output limits assertEquals("ServiceExceptionReport", dom.getDocumentElement().getNodeName()); String error = xpath.evaluate( "/ServiceExceptionReport/ServiceException/text()", dom).trim(); assertTrue(error.matches(".*generate too much data.*")); } finally { setOutputLimit(0); } }
public void testElevationSecond() throws Exception { String request = getWaterTempElevationRequest("100.0"); MockHttpServletResponse response = postAsServletResponse("wcs", request); assertEquals("image/tiff;subtype=\"geotiff\"", response.getContentType()); // save File tiffFile = File.createTempFile("wcs", "", new File("target")); IOUtils.copy(getBinaryInputStream(response), new FileOutputStream(tiffFile)); // make sure we can read the coverage back GeoTiffReader reader = new GeoTiffReader(tiffFile); GridCoverage2D result = reader.read(null); /* gdallocationinfo NCOM_wattemp_100_20081101T0000000_12.tiff 10 10 Report: Location: (10P,10L) Band 1: Value: 13.337999683572 */ // check a pixel double[] pixel = new double[1]; result.getRenderedImage().getData().getPixel(10, 10, pixel); assertEquals(13.337999683572, pixel[0], 1e-6); tiffFile.delete(); }
public void testElevationFirst() throws Exception { String request = getWaterTempElevationRequest("0.0"); MockHttpServletResponse response = postAsServletResponse("wcs", request); assertEquals("image/tiff;subtype=\"geotiff\"", response.getContentType()); // same result as time first checkTimeCurrent(response); }
assertTrue(coverages.length==1); final AffineTransform2D tx = (AffineTransform2D) result.getGridGeometry().getGridToCRS(); assertEquals("resx",expectedTx.getScaleX(),tx.getScaleX(),1E-6); assertEquals("resx",Math.abs(expectedTx.getScaleY()),Math.abs(tx.getScaleY()),1E-6); assertEquals("w",180,gridEnvelope.getSpan(0)); assertEquals("h",180,gridEnvelope.getSpan(1)); assertEquals("grid envelope",expectedGridEnvelope, gridEnvelope);
assertEquals("image/tiff;subtype=\"geotiff\"", response.getContentType()); assertEquals(CRS.decode("EPSG:3857"), reader.getOriginalEnvelope().getCoordinateReferenceSystem());