/** * Determine tile index given a row id */ public static TileIndex tileIndexFromRowId (String rowId) { String[] fields = rowId.split(","); return new TileIndex(Integer.parseInt(fields[0]), Integer.parseInt(fields[1]), Integer.parseInt(fields[2])); }
@Override public TileIndex unencodeJSON (JSONNode propertyNode) throws JSONException, ConfigurationException { JSONObject propertyObj = propertyNode.getAsJSONObject(); int level = propertyObj.getInt("level"); int xIndex = propertyObj.getInt("xIndex"); int yIndex = propertyObj.getInt("yIndex"); int numXBins = propertyObj.getInt("xBinCount"); int numYBins= propertyObj.getInt("yBinCount"); return new TileIndex(level, xIndex, yIndex, numXBins, numYBins); }
@Override public TileIndex rootToTile (Point2D point, int level, int xBins, int yBins) { Point2D tileMercator = rootToTileMercator(point, level); return new TileIndex(level, (int) Math.floor(tileMercator.getX()), (int) Math.floor(tileMercator.getY()), xBins, yBins); }
private TileIndex getRandomTile() { final int MAX_DEPTH = 4; int level = (int)(Math.random() * MAX_DEPTH); int x = (int)(Math.random() * (level * (1 << level)) ); int y = (int)(Math.random() * (level * (1 << level)) ); return new TileIndex( level, x, y, AnnotationIndexer.NUM_BINS, AnnotationIndexer.NUM_BINS ); } }
private <T> List<TileData<T>> readAvroTiles (PyramidIO pio, TileSerializer<T> serializer, String pyramidId) { ArrayList<TileIndex> tiles = new ArrayList<TileIndex>(); TileIndex index = new TileIndex(4, 3, 2); tiles.add(index); try { return pio.readTiles(pyramidId, serializer, tiles); } catch (IOException e) { e.printStackTrace(); } return null; }
private <T> List<TileData<T>> readAvroTiles (PyramidIO pio, TileSerializer<T> serializer, String pyramidId) { ArrayList<TileIndex> tiles = new ArrayList<TileIndex>(); TileIndex index = new TileIndex(4, 3, 2); tiles.add(index); try { return pio.readTiles(pyramidId, serializer, tiles); } catch (IOException e) { e.printStackTrace(); } return null; }
private <T> List<TileData<T>> readAvroTiles (PyramidIO pio, TileSerializer<T> serializer, String pyramidId) { ArrayList<TileIndex> tiles = new ArrayList<TileIndex>(); TileIndex index = new TileIndex(4, 3, 2); tiles.add(index); try { return pio.readTiles(pyramidId, serializer, tiles); } catch (IOException e) { e.printStackTrace(); } return null; }
@Test public void testDefaultDefaultValue () { SparseTileData<Integer> tile = new SparseTileData<>(new TileIndex(0, 0, 0, 4, 4)); for (int x = 0; x < 4; ++x) { for (int y = 0; y < 4; ++y) { Assert.assertNull(tile.getBin(x, y)); } } }
@Test public void testCompression () throws IOException { TileData<Double> data = new DenseTileData<Double>(new TileIndex(0, 0, 0), 1.1); TileSerializer<Double> serializer = new KryoSerializer<Double>(new TypeDescriptor(Double.class)); ByteArrayOutputStream output = new ByteArrayOutputStream(); serializer.serialize(data, output); output.flush(); output.close(); byte[] buffer = output.toByteArray(); Assert.assertTrue(buffer.length < 256*256); }
@Test public void testBoundingBoxDirection () { TileIndex tile = new TileIndex(5, 23, 17); BinIndex bin = new BinIndex(34, 78); Rectangle2D bounds = _mercator.getBinBounds(tile, bin); Assert.assertTrue(bounds.getMaxX() > bounds.getMinX()); Assert.assertTrue(bounds.getMaxY() > bounds.getMinY()); }
@Test public void testNullBinReplacement () { TileData<List<Integer>> base = new DenseTileData<List<Integer>>(new TileIndex(0, 0, 0, 1, 1), (List<Integer>) null); TileData<List<Integer>> slice = new DenseTileMultiSliceView<Integer>(base, Arrays.asList(2, 0)); slice.setBin(0, 0, Arrays.asList(4, 2)); Assert.assertEquals(2, base.getBin(0, 0).get(0).intValue()); Assert.assertNull( base.getBin(0, 0).get(1)); Assert.assertEquals(4, base.getBin(0, 0).get(2).intValue()); } @Test
@Test public void testLevel0 () { TileIndex tile = new TileIndex(0, 0, 0); Rectangle2D tileBounds = _mercator.getTileBounds(tile); Assert.assertEquals(-180.0, tileBounds.getMinX(), EPSILON); Assert.assertEquals(180.0, tileBounds.getMaxX(), EPSILON); Assert.assertEquals(-85.05112877980659, tileBounds.getMinY(), EPSILON); Assert.assertEquals(85.05112877980659, tileBounds.getMaxY(), EPSILON); }
private Point2D getBinCenter (TilePyramid binner, int level, int tileX, int tileY, int binX, int binY) { TileIndex tile = new TileIndex(level, tileX, tileY); BinIndex bin = new BinIndex(binX, binY); Rectangle2D area = binner.getBinBounds(tile, bin); return new Point2D.Double(area.getCenterX(), area.getCenterY()); }
@Test(expected = IllegalArgumentException.class) public void testOutOfBoundsXBin () { SubTileDataView<Integer> underTest = SubTileDataView.fromSourceAbsolute(source16, new TileIndex(1, 1, 1)); underTest.getBin(2,1); }
private TileData<Double> createRandomTile () { TileIndex index = new TileIndex(0, 0, 0); TileData<Double> datum = new DenseTileData<>(index); for (int x=0; x<index.getXBins(); ++x) { for (int y=0; y<index.getYBins(); ++y) { datum.setBin(x, y, Math.random()); } } return datum; } private TileData<Double> addTiles (TileData<Double> a, TileData<Double> b) {
private Point getBinCoordinates (double x, double y) { Point2D point = new Point2D.Double(x, y); TileIndex tile = _pyramid.rootToTile(point, _level); if (tile.getXBins() != _numXBins && tile.getYBins() != _numYBins) { tile = new TileIndex(tile.getLevel(), tile.getX(), tile.getY(), _numXBins, _numYBins); } BinIndex bin = _pyramid.rootToBin(point, tile); return new Point(tile.getX()*tile.getXBins()+bin.getX(), tile.getY()*tile.getYBins()+(tile.getYBins()-1-bin.getY())); }
@Before public void setup () { _index = new TileIndex(0, 0, 0, 2, 2); _tile = new DenseTileData<>(_index); _tile.setBin(0, 0, 1.0); _tile.setBin(0, 1, 2.0); _tile.setBin(1, 0, 3.0); _tile.setBin(1, 1, 4.0); _tile.setMetaData("a", "abc"); _tile.setMetaData("b", "bcd"); }
@Test public void testSimpleTwoLevels () { SubTileDataView<Integer> underTest = SubTileDataView.fromSourceAbsolute(source16, new TileIndex(2, 1, 1)); Assert.assertEquals(2, underTest.getDefinition().getLevel()); Assert.assertEquals(1, underTest.getDefinition().getX()); Assert.assertEquals(1, underTest.getDefinition().getY()); Assert.assertEquals(1, underTest.getDefinition().getXBins()); Assert.assertEquals(1, underTest.getDefinition().getYBins()); Assert.assertEquals(9, (int)underTest.getBin(0,0)); }