@Override public TileData<List<T>> transform(TileData<List<T>> data) throws Exception { AverageTileBucketView<T> avgView = new AverageTileBucketView<>(data, _startBucket, _endBucket); UnaryOperationTileView<T> logView = new UnaryOperationTileView<>(UnaryOperator.OPERATOR_TYPE.LOG_10, avgView, 0.0); return logView; }
@Override public String toString () { return "<sparse-tile index=\""+getDefinition()+"\", default=\""+_defaultValue+"\"/>"; } }
@Override public String toString () { return "<dense-tile index=\""+getDefinition()+"\", default=\""+_default+"\"/>"; } }
public TileData<List<T>> harden () { TileIndex index = getDefinition(); if (isDense()) { DenseTileData<List<T>> hardened = new DenseTileData<>(index); hardened.setDefaultValue(_base.getDefaultValue()); for (int x=0; x<index.getXBins(); ++x) { for (int y=0; y<index.getYBins(); ++y) { hardened.setBin(x, y, getBin(x, y)); } } return hardened; } else { SparseTileData<List<T>> hardened = new SparseTileData<>(index, _base.getDefaultValue()); for (int x=0; x<index.getXBins(); ++x) { for (int y=0; y<index.getYBins(); ++y) { List<T> value = getBin(x, y); if (null != value) { hardened.setBin(x, y, getBin(x, y)); } } } return hardened; } }
@Test(expected = IllegalArgumentException.class) public void testBadRelativeLevel() { TileData<Integer> source = new DenseTileData<>(new TileIndex(3, 0, 0)); SubTileDataView.fromSourceAbsolute(source, new TileIndex(2, 1, 1)); }
@Override public TileIndex rootToTile (double x, double y, int level) { return rootToTile(x, y, level, 256, 256); }
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; }
@Before public void setup () { _mercator = new WebMercatorTilePyramid(); }
@Test(expected = IllegalArgumentException.class) public void testOutOfBoundsXBin () { SubTileDataView<Integer> underTest = SubTileDataView.fromSourceAbsolute(source16, new TileIndex(1, 1, 1)); underTest.getBin(2,1); }
@Override public TileIndex rootToTile (double x, double y, int level) { return rootToTile(x, y, level, 256, 256); }
@Override public BinIndex rootToBin (Point2D point, TileIndex tile) { return rootToBin(point.getX(), point.getY(), tile); }
/** * Get an iterator over all our defined data, ignoring defaulted bins */ public Iterator<Pair<BinIndex, T>> getData () { return new DataIterator(); }
protected double gudermannianToLinear (double value) { // convert gudermannian coordinates into their equivalent linear counterparts return (gudermannianInv( value ) / Math.PI) * EPSG_900913_LATITUDE; }
protected double linearToGudermannian (double value) { // convert linear coordinates into their equivalent gudermannian counterparts return gudermannian( (value / EPSG_900913_LATITUDE) * Math.PI ); }
@Override public TileData<List<T>> transform (TileData<List<T>> inputData) throws Exception { if ( _startBucket != null && _endBucket != null ) { if ( _startBucket > _endBucket ) { throw new IllegalArgumentException("Filter by time transformer arguments are invalid. start bucket: " + _startBucket + ", end bucket: " + _endBucket); } } return new FilterTileBucketView<>(inputData, _startBucket, _endBucket); } }
private Point2D rootToTileMercator (Point2D point, int level) { return rootToTileMercator(point.getX(), point.getY(), level); }
@Test(expected = IllegalArgumentException.class) public void testBadRelativeIndex () { TileData<Integer> source = new DenseTileData<>(new TileIndex(1, 0, 0)); SubTileDataView.fromSourceAbsolute(source, new TileIndex(2, 2, 1)); }
@Override public TileIndex rootToTile (Point2D point, int level, int xBins, int yBins) { return rootToTile(point.getX(), point.getY(), level, xBins, yBins); }
@Override public TileIndex rootToTile (Point2D point, int level) { return rootToTile(point, level, 256, 256); }
@Override public TileIndex rootToTile (Point2D point, int level) { return rootToTile(point.getX(), point.getY(), level, 256, 256); }