@Override public boolean equals (Object obj) { if (this == obj) return true; if (null == obj) return false; if (!(obj instanceof TileAndBinIndices)) return false; TileAndBinIndices tb = (TileAndBinIndices) obj; if (!_tile.equals(tb.getTile())) return false; if (!_bin.equals(tb.getBin())) return false; return true; } }
/** * Compare two raw input values according to our pyramid scheme * * @return Standard comparison values, as per {@link Comparator} */ public int compareRaw (double x1, double y1, double x2, double y2) { TileIndex tile1 = _pyramid.rootToTile(x1, y1, _comparisonLevel); TileIndex tile2 = _pyramid.rootToTile(x2, y2, _comparisonLevel); return compareIndexAtLevel(tile1, tile2); }
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())); }
private boolean isDense () { TileIndex index = getDefinition(); int nullBins = 0; int bins = 0; for (int x=0; x<index.getXBins(); ++x) { for (int y=0; y<index.getYBins(); ++y) { if (binNullForUs(_base.getBin(x, y))) ++nullBins; ++bins; } } return nullBins*2 < bins; }
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()); }
private void testTile (TileIndex tile, int binX, int binY, int univX, int univY) { BinIndex tileBin = new BinIndex(binX, binY); BinIndex universalBin = new BinIndex(univX, univY); Assert.assertEquals(universalBin, TileIndex.tileBinIndexToUniversalBinIndex(tile, tileBin)); Assert.assertEquals(new TileAndBinIndices(tile, tileBin), TileIndex.universalBinIndexToTileBinIndex(tile, universalBin)); } @Test
@Override public void setMetaData (String property, Object value) { _data.setMetaData(property, value); } }
@Override public int compare (Point p1, Point p2) { return compareRaw(p1, p2); } }
@Override public int compare (TileIndex t1, TileIndex t2) { return compareIndex(t1, t2); } }
@Override public String encode (TileIndex value) { if (null == value) return "null"; return value.toString(); }
@Override public ConfigurableFactory<TilePyramid> createFactory (String name, ConfigurableFactory<?> parent, List<String> path) { return new TilePyramidFactory(name, parent, path); } }
public TilePyramidFactory (String name, ConfigurableFactory<?> parent, List<String> path) { super(name, TilePyramid.class, parent, path); addProperty(PYRAMID_TYPE); addProperty(MINIMUM_X); addProperty(MAXIMUM_X); addProperty(MINIMUM_Y); addProperty(MAXIMUM_Y); }
@Override public void setMetaData (String property, Object value) { _base.setMetaData(property, value); } }
/** * Compare two raw input values according to our pyramid scheme * * @return Standard comparison values, as per {@link Comparator} */ public int compareRaw (Point2D pt1, Point2D pt2) { // Mostly taken from http://en.wikipedia.org/wiki/Z-order_curve, but // this is a very simple 2-dimensional case, so the results are rather // simplified. TileIndex tile1 = _pyramid.rootToTile(pt1, _comparisonLevel); TileIndex tile2 = _pyramid.rootToTile(pt2, _comparisonLevel); return compareIndexAtLevel(tile1, tile2); }
@Override public void setMetaData (String property, Object value) { _data.setMetaData(property, value); } }
@Override public void setMetaData(String property, Object value) { _tileData.setMetaData(property, value); } }
@Override public void setMetaData(String property, Object value) { _base.setMetaData(property, value); } }
@Override public void setMetaData (String property, Object value) { _base.setMetaData(property, value); } }