package org.geotools.mbtiles.mosaic; import static org.junit.Assert.assertEquals; import java.awt.Rectangle; import java.awt.image.RenderedImage; import java.io.IOException; import org.geotools.coverage.grid.GridCoverage2D; import org.geotools.coverage.grid.GridEnvelope2D; import org.geotools.coverage.grid.GridGeometry2D; import org.geotools.coverage.grid.io.AbstractGridFormat; import org.geotools.data.DataUtilities; import org.geotools.geometry.jts.ReferencedEnvelope; import org.geotools.image.test.ImageAssert; import org.geotools.parameter.Parameter; import org.junit.Test; import org.opengis.parameter.GeneralParameterValue; public class MBTilesReaderTest { @Test public void testZoomlevel2() throws IOException { MBTilesReader reader = new MBTilesReader(getClass().getResource("world_lakes.mbtiles"), null); GeneralParameterValue[] parameters = new GeneralParameterValue[1]; GridGeometry2D gg = new GridGeometry2D(new GridEnvelope2D(new Rectangle(500,500)), new ReferencedEnvelope(0,180.0,-85.0,0,MBTilesReader.WGS_84)); parameters[0] = new Parameter<GridGeometry2D>(AbstractGridFormat.READ_GRIDGEOMETRY2D, gg); GridCoverage2D gc = reader.read(parameters); RenderedImage img = gc.getRenderedImage(); assertEquals(0, gc.getEnvelope().getMinimum(0),0.01); assertEquals(-20037508.34, gc.getEnvelope().getMinimum(1),0.01); assertEquals(20037508.34, gc.getEnvelope().getMaximum(0),0.01); assertEquals(0, gc.getEnvelope().getMaximum(1),0.01); assertEquals(512, img.getWidth()); assertEquals(512, img.getHeight()); //ImageIO.write(img, "png", DataUtilities.urlToFile(getClass().getResource("world_lakes.png"))); ImageAssert.assertEquals(DataUtilities.urlToFile(getClass().getResource("world_lakes.png")), img, 250); } @Test public void testZoomlevel3() throws IOException { MBTilesReader reader = new MBTilesReader(getClass().getResource("world_lakes.mbtiles"), null); GeneralParameterValue[] parameters = new GeneralParameterValue[1]; GridGeometry2D gg = new GridGeometry2D(new GridEnvelope2D(new Rectangle(500,500)), new ReferencedEnvelope(0,90.0,-85.0,0,MBTilesReader.WGS_84)); parameters[0] = new Parameter<GridGeometry2D>(AbstractGridFormat.READ_GRIDGEOMETRY2D, gg); GridCoverage2D gc = reader.read(parameters); RenderedImage img = gc.getRenderedImage(); assertEquals(0, gc.getEnvelope().getMinimum(0),0.01); assertEquals(-20037508.34, gc.getEnvelope().getMinimum(1),0.01); assertEquals(15028131.25, gc.getEnvelope().getMaximum(0),0.01); assertEquals(0, gc.getEnvelope().getMaximum(1),0.01); assertEquals(768, img.getWidth()); assertEquals(1024, img.getHeight()); } @Test public void testZoomlevel4() throws IOException { MBTilesReader reader = new MBTilesReader(getClass().getResource("world_lakes.mbtiles"), null); GeneralParameterValue[] parameters = new GeneralParameterValue[1]; GridGeometry2D gg = new GridGeometry2D(new GridEnvelope2D(new Rectangle(500,500)), new ReferencedEnvelope(0,45.0,-85.0,0,MBTilesReader.WGS_84)); parameters[0] = new Parameter<GridGeometry2D>(AbstractGridFormat.READ_GRIDGEOMETRY2D, gg); GridCoverage2D gc = reader.read(parameters); RenderedImage img = gc.getRenderedImage(); assertEquals(0, gc.getEnvelope().getMinimum(0),0.01); assertEquals(-20037508.34, gc.getEnvelope().getMinimum(1),0.01); assertEquals(7514065.62, gc.getEnvelope().getMaximum(0),0.01); assertEquals(0, gc.getEnvelope().getMaximum(1),0.01); assertEquals(768, img.getWidth()); assertEquals(2048, img.getHeight()); } }