package org.geoserver.mbtiles.gs.wps; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.File; import java.util.logging.Level; import java.util.logging.Logger; import org.geoserver.data.test.SystemTestData; import org.geoserver.wps.WPSTestSupport; import org.geotools.data.DataUtilities; import org.geotools.mbtiles.MBTilesFile; import org.geotools.mbtiles.MBTilesMetadata; import org.geotools.util.logging.Logging; import org.junit.Test; public class MBTilesProcessTest extends WPSTestSupport { private final static Logger LOGGER = Logging.getLogger(MBTilesProcessTest.class); @Override protected void setUpTestData(SystemTestData testData) throws Exception { super.setUpTestData(testData); testData.setUpDefaultRasterLayers(); } @Test public void testMBTilesProcess() throws Exception { File path = getDataDirectory().findOrCreateDataRoot(); String urlPath = string(post("wps", getXml(path))).trim(); File file = new File(path, "World.mbtiles"); // File file = getDataDirectory().findFile("data", "test.mbtiles"); assertNotNull(file); assertTrue(file.exists()); MBTilesFile mbtiles = new MBTilesFile(file); MBTilesMetadata metadata = mbtiles.loadMetaData(); assertEquals(11, mbtiles.maxZoom()); assertEquals(10, mbtiles.minZoom()); assertEquals("World", metadata.getName()); assertEquals(-0.17578125, metadata.getBounds().getMinimum(0), 0.0001); assertEquals(-0.087890625, metadata.getBounds().getMinimum(1), 0.0001); assertEquals(0.17578125, metadata.getBounds().getMaximum(0), 0.0001); assertEquals(0.087890625, metadata.getBounds().getMaximum(1), 0.0001); try { mbtiles.close(); } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); } } public String getXml(File temp) { return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<wps:Execute version=\"1.0.0\" service=\"WPS\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.opengis.net/wps/1.0.0\" xmlns:wfs=\"http://www.opengis.net/wfs\" xmlns:wps=\"http://www.opengis.net/wps/1.0.0\" xmlns:ows=\"http://www.opengis.net/ows/1.1\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:wcs=\"http://www.opengis.net/wcs/1.1.1\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xsi:schemaLocation=\"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd\">" + " <ows:Identifier>gs:MBTiles</ows:Identifier>" + " <wps:DataInputs>" + " <wps:Input>" + " <ows:Identifier>path</ows:Identifier>" + " <wps:Data>" + " <wps:LiteralData>" + DataUtilities.fileToURL(temp) + "</wps:LiteralData>" + " </wps:Data>" + " </wps:Input>" + " <wps:Input>" + " <ows:Identifier>layers</ows:Identifier>" + " <wps:Data>" + " <wps:LiteralData>wcs:World</wps:LiteralData>" + " </wps:Data>" + " </wps:Input>" + " <wps:Input>" + " <ows:Identifier>layers</ows:Identifier>" + " <wps:Data>" + " <wps:LiteralData>cite:Lakes</wps:LiteralData>" + " </wps:Data>" + " </wps:Input>" + " <wps:Input>" + " <ows:Identifier>format</ows:Identifier>" + " <wps:Data>" + " <wps:LiteralData>image/png</wps:LiteralData>" + " </wps:Data>" + " </wps:Input>" + " <wps:Input>" + " <ows:Identifier>boundingbox</ows:Identifier>" + " <wps:Data>" + " <wps:BoundingBoxData crs=\"EPSG:4326\" dimensions=\"2\">" + " <ows:LowerCorner>-0.17578125 -0.087890625</ows:LowerCorner>" + " <ows:UpperCorner>0.17578125 0.087890625</ows:UpperCorner>" + " </wps:BoundingBoxData>" + " </wps:Data>" + " </wps:Input>" + " <wps:Input>" + " <ows:Identifier>minZoom</ows:Identifier>" + " <wps:Data>" + " <wps:LiteralData>10</wps:LiteralData>" + " </wps:Data>" + " </wps:Input>" + " <wps:Input>" + " <ows:Identifier>maxZoom</ows:Identifier>" + " <wps:Data>" + " <wps:LiteralData>12</wps:LiteralData>" + " </wps:Data>" + " </wps:Input>" + " <wps:Input>" + " <ows:Identifier>bgColor</ows:Identifier>" + " <wps:Data>" + " <wps:LiteralData>#FFFFFF</wps:LiteralData>" + " </wps:Data>" + " </wps:Input>" + " </wps:DataInputs>" + " <wps:Input>" + " <ows:Identifier>transparency</ows:Identifier>" + " <wps:Data>" + " <wps:LiteralData>true</wps:LiteralData>" + " </wps:Data>" + " </wps:Input>" + " <wps:ResponseForm>" + " <wps:RawDataOutput>" + " <ows:Identifier>mbtile</ows:Identifier>" + " </wps:RawDataOutput>" + " </wps:ResponseForm>" + "</wps:Execute>"; } }