@Override
public TileData<T> combine(TileData<T> data, TileIndex index, int coarseness, JSONObject tileProperties) throws IOException, JSONException {
TileData normalizingData = TileIOUtils.tileDataForIndex(index, _dataId, _serializer, _pyramidIO, coarseness, tileProperties);
if (!(data.getDefaultValue() instanceof List<?>)) {
data = new ListTileView(data);
}
if (!(normalizingData.getDefaultValue() instanceof List<?>)) {
normalizingData = new ListTileView(normalizingData);
}
int normalizeSize = getBucketCount((TileData<List<?>>)normalizingData);
int dataSize = getBucketCount((TileData<List<?>>)data);
if (dataSize < normalizeSize) {
data = new ScaledTileView(data, normalizeSize);
} else if (normalizeSize < dataSize) {
normalizingData = new ScaledTileView(normalizingData, dataSize);
}
return new BinaryOperationTileView(
data, normalizingData, BinaryOperator.OPERATOR_TYPE.DIVIDE, 0.0);
}
}