use of com.baremaps.model.TileJSON in project baremaps by baremaps.
the class Init method call.
@Override
public Integer call() throws BlobStoreException, IOException {
BlobStore blobStore = options.blobStore();
ObjectMapper mapper = defaultObjectMapper();
if (style != null) {
MbStyle styleObject = new MbStyle();
styleObject.setName("Baremaps");
MbStyleSources sources = new MbStyleSources();
sources.setType("vector");
sources.setUrl("http://localhost:9000/tiles.json");
styleObject.setSources(Map.of("baremaps", sources));
blobStore.put(style, Blob.builder().withByteArray(mapper.writerWithDefaultPrettyPrinter().writeValueAsBytes(styleObject)).build());
logger.info("Style initialized: {}", style);
}
if (tileset != null) {
TileJSON tilesetObject = new TileJSON();
tilesetObject.setTilejson("2.2.0");
tilesetObject.setName("Baremaps");
tilesetObject.setTiles(Arrays.asList("http://localhost:9000/tiles.json"));
blobStore.put(tileset, Blob.builder().withByteArray(mapper.writerWithDefaultPrettyPrinter().writeValueAsBytes(tilesetObject)).build());
logger.info("Tileset initialized: {}", tileset);
}
return 0;
}
use of com.baremaps.model.TileJSON in project baremaps by baremaps.
the class View method call.
@Override
public Integer call() throws Exception {
ObjectMapper objectMapper = defaultObjectMapper();
BlobStore blobStore = options.blobStore();
TileJSON tileJSON = objectMapper.readValue(blobStore.get(this.tileset).getInputStream(), TileJSON.class);
CaffeineSpec caffeineSpec = CaffeineSpec.parse(cache);
DataSource datasource = PostgresUtils.datasource(database);
List<PostgresQuery> queries = asPostgresQuery(tileJSON);
TileStore tileStore = new PostgresTileStore(datasource, queries);
TileStore tileCache = new TileCache(tileStore, caffeineSpec);
// Configure the application
ResourceConfig application = new ResourceConfig().register(CorsFilter.class).register(ViewerResources.class).register(contextResolverFor(objectMapper)).register(new AbstractBinder() {
@Override
protected void configure() {
bind(tileset).to(URI.class).named("tileset");
bind(style).to(URI.class).named("style");
bind(blobStore).to(BlobStore.class);
bind(tileCache).to(TileStore.class);
}
});
BlockingStreamingHttpService httpService = new HttpJerseyRouterBuilder().buildBlockingStreaming(application);
ServerContext serverContext = HttpServers.forPort(port).listenBlockingStreamingAndAwait(httpService);
logger.info("Listening on {}", serverContext.listenAddress());
serverContext.awaitShutdown();
return 0;
}
use of com.baremaps.model.TileJSON in project baremaps by baremaps.
the class TilesetsResource method loadTileStore.
private TileStore loadTileStore(UUID tilesetId) {
TileJSON tileset = jdbi.withHandle(handle -> handle.createQuery("select tileset from tilesets where id = :id").bind("id", tilesetId).mapTo(TILESET).one());
List<PostgresQuery> queries = tileset.getVectorLayers().stream().flatMap(layer -> layer.getQueries().stream().map(query -> new PostgresQuery(layer.getId(), query.getMinzoom(), query.getMaxzoom(), query.getSql()))).collect(Collectors.toList());
return new PostgresTileStore(dataSource, queries);
}
use of com.baremaps.model.TileJSON in project baremaps by baremaps.
the class TilesetsResourceIntegrationTest method test.
@Test
public void test() {
// List the tilesets
List<UUID> ids = target().path("/tilesets").request().get(new GenericType<>() {
});
assertEquals(0, ids.size());
// Create a new tileset with the service
TileJSON tileSet = new TileJSON();
tileSet.setName("test");
target().path("/tilesets").request(MediaType.APPLICATION_JSON).post(Entity.json(tileSet));
// List the tilesets
ids = target().path("/tilesets").request().get(new GenericType<>() {
});
assertEquals(1, ids.size());
// Get the tileset
UUID id = ids.get(0);
tileSet = target().path("/tilesets/" + id).request().get(TileJSON.class);
assertEquals("test", tileSet.getName());
// Delete the tileset
target().path("/tilesets/" + ids.get(0)).request().delete();
// List the tilesets
ids = target().path("/tilesets").request().get(new GenericType<>() {
});
assertEquals(0, ids.size());
}
use of com.baremaps.model.TileJSON 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