use of com.baremaps.osm.progress.StreamProgress in project baremaps by baremaps.
the class Export method call.
@Override
public Integer call() throws TileStoreException, BlobStoreException, IOException {
ObjectMapper mapper = defaultObjectMapper();
DataSource datasource = PostgresUtils.datasource(database);
BlobStore blobStore = options.blobStore();
TileJSON source = mapper.readValue(blobStore.get(this.tileset).getInputStream(), TileJSON.class);
TileStore tileSource = sourceTileStore(source, datasource);
TileStore tileTarget = targetTileStore(source, blobStore);
Stream<Tile> stream;
if (tiles == null) {
Envelope envelope = new Envelope(source.getBounds().get(0), source.getBounds().get(2), source.getBounds().get(1), source.getBounds().get(3));
long count = Tile.count(envelope, source.getMinzoom(), source.getMaxzoom());
stream = StreamUtils.stream(Tile.iterator(envelope, source.getMinzoom(), source.getMaxzoom())).peek(new StreamProgress<>(count, 5000));
} else {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(blobStore.get(tiles).getInputStream()))) {
stream = reader.lines().flatMap(line -> {
String[] array = line.split(",");
int x = Integer.parseInt(array[0]);
int y = Integer.parseInt(array[1]);
int z = Integer.parseInt(array[2]);
Tile tile = new Tile(x, y, z);
return StreamUtils.stream(Tile.iterator(tile.envelope(), source.getMinzoom(), source.getMaxzoom()));
});
}
}
logger.info("Exporting tiles");
StreamUtils.batch(stream, 10).filter(new TileBatchPredicate(batchArraySize, batchArrayIndex)).forEach(new TileChannel(tileSource, tileTarget));
logger.info("Done");
return 0;
}
Aggregations