Search in sources :

Example 6 with Tile

use of com.baremaps.tile.Tile 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;
}
Also used : DefaultObjectMapper.defaultObjectMapper(com.baremaps.server.common.DefaultObjectMapper.defaultObjectMapper) MBTiles(com.baremaps.tile.mbtiles.MBTiles) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) Callable(java.util.concurrent.Callable) Conversions.asPostgresQuery(com.baremaps.server.ogcapi.Conversions.asPostgresQuery) TileBatchPredicate(com.baremaps.tile.TileBatchPredicate) BigDecimal(java.math.BigDecimal) TileChannel(com.baremaps.tile.TileChannel) Map(java.util.Map) DataSource(javax.sql.DataSource) TileStore(com.baremaps.tile.TileStore) URI(java.net.URI) Command(picocli.CommandLine.Command) SQLiteDataSource(org.sqlite.SQLiteDataSource) PostgresUtils(com.baremaps.postgres.jdbc.PostgresUtils) BlobStoreException(com.baremaps.blob.BlobStoreException) Query(com.baremaps.model.Query) PostgresQuery(com.baremaps.tile.postgres.PostgresQuery) Logger(org.slf4j.Logger) TileJSON(com.baremaps.model.TileJSON) PostgresTileStore(com.baremaps.tile.postgres.PostgresTileStore) Mixin(picocli.CommandLine.Mixin) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) TileBlobStore(com.baremaps.tile.TileBlobStore) InputStreamReader(java.io.InputStreamReader) Collectors(java.util.stream.Collectors) TileStoreException(com.baremaps.tile.TileStoreException) List(java.util.List) Option(picocli.CommandLine.Option) Stream(java.util.stream.Stream) Tile(com.baremaps.tile.Tile) StreamUtils(com.baremaps.stream.StreamUtils) BlobStore(com.baremaps.blob.BlobStore) StreamProgress(com.baremaps.osm.progress.StreamProgress) BufferedReader(java.io.BufferedReader) Envelope(org.locationtech.jts.geom.Envelope) TileStore(com.baremaps.tile.TileStore) PostgresTileStore(com.baremaps.tile.postgres.PostgresTileStore) InputStreamReader(java.io.InputStreamReader) Tile(com.baremaps.tile.Tile) Envelope(org.locationtech.jts.geom.Envelope) StreamProgress(com.baremaps.osm.progress.StreamProgress) DataSource(javax.sql.DataSource) SQLiteDataSource(org.sqlite.SQLiteDataSource) TileChannel(com.baremaps.tile.TileChannel) TileJSON(com.baremaps.model.TileJSON) BufferedReader(java.io.BufferedReader) TileBatchPredicate(com.baremaps.tile.TileBatchPredicate) DefaultObjectMapper.defaultObjectMapper(com.baremaps.server.common.DefaultObjectMapper.defaultObjectMapper) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) TileBlobStore(com.baremaps.tile.TileBlobStore) BlobStore(com.baremaps.blob.BlobStore)

Example 7 with Tile

use of com.baremaps.tile.Tile in project baremaps by baremaps.

the class PostgresTileStoreTest method sameQueries.

@Test
void sameQueries() {
    List<PostgresQuery> queries = Arrays.asList(new PostgresQuery("a", 0, 20, "SELECT id, tags, geom FROM table"), new PostgresQuery("b", 0, 20, "SELECT id, tags, geom FROM table"));
    PostgresTileStore tileStore = new PostgresTileStore(null, queries);
    String query = tileStore.withQuery(new Tile(0, 0, 10));
    assertEquals("with ha14cb45b as (select * from table where ((true) OR (true)) and st_intersects(geom, st_tileenvelope(10, 0, 0))) select st_asmvt(target, 'a', 4096, 'geom', 'id') from (select id as id, (tags ||  jsonb_build_object('geometry', lower(replace(st_geometrytype(geom), 'ST_', '')))) as tags, st_asmvtgeom(geom, st_tileenvelope(10, 0, 0), 4096, 256, true) as geom from ha14cb45b ) as target union all select st_asmvt(target, 'b', 4096, 'geom', 'id') from (select id as id, (tags ||  jsonb_build_object('geometry', lower(replace(st_geometrytype(geom), 'ST_', '')))) as tags, st_asmvtgeom(geom, st_tileenvelope(10, 0, 0), 4096, 256, true) as geom from ha14cb45b ) as target", query);
}
Also used : Tile(com.baremaps.tile.Tile) Test(org.junit.jupiter.api.Test)

Aggregations

Tile (com.baremaps.tile.Tile)7 TileStore (com.baremaps.tile.TileStore)4 Test (org.junit.jupiter.api.Test)4 PostgresTileStore (com.baremaps.tile.postgres.PostgresTileStore)3 Blob (com.baremaps.blob.Blob)2 BlobStoreException (com.baremaps.blob.BlobStoreException)2 Conversions.asPostgresQuery (com.baremaps.server.ogcapi.Conversions.asPostgresQuery)2 TileStoreException (com.baremaps.tile.TileStoreException)2 PostgresQuery (com.baremaps.tile.postgres.PostgresQuery)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)2 IOException (java.io.IOException)2 BlobStore (com.baremaps.blob.BlobStore)1 Query (com.baremaps.model.Query)1 TileJSON (com.baremaps.model.TileJSON)1 StreamProgress (com.baremaps.osm.progress.StreamProgress)1 PostgresUtils (com.baremaps.postgres.jdbc.PostgresUtils)1 DefaultObjectMapper.defaultObjectMapper (com.baremaps.server.common.DefaultObjectMapper.defaultObjectMapper)1 StreamUtils (com.baremaps.stream.StreamUtils)1 TileBatchPredicate (com.baremaps.tile.TileBatchPredicate)1 TileBlobStore (com.baremaps.tile.TileBlobStore)1