You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@baremaps.apache.org by bc...@apache.org on 2022/12/23 10:01:06 UTC
[incubator-baremaps] 01/02: Simplify the coordinate and reference map builders
This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a commit to branch refactoring
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
commit 936f2a7742c77e9d32439795f3cc5a663ce945ed
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Fri Dec 23 00:54:37 2022 +0100
Simplify the coordinate and reference map builders
---
.../org/apache/baremaps/database/ImportService.java | 8 ++++----
.../openstreetmap/function/CoordinateMapBuilder.java | 20 ++++++--------------
.../openstreetmap/function/ReferenceMapBuilder.java | 17 ++++++-----------
.../baremaps/openstreetmap/pbf/PbfBlockReader.java | 12 ++++++------
4 files changed, 22 insertions(+), 35 deletions(-)
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java b/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java
index 4df67cd3..3ef63825 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java
@@ -60,12 +60,12 @@ public class ImportService implements Callable<Void> {
var coordinateMapBuilder = new CoordinateMapBuilder(coordinateMap);
var referenceMapBuilder = new ReferenceMapBuilder(referenceMap);
var entityGeometryBuilder = new EntityGeometryBuilder(coordinateMap, referenceMap);
+ var entityGeometryHandler =
+ coordinateMapBuilder.andThen(referenceMapBuilder).andThen(entityGeometryBuilder);
var entityProjectionTransformer = new EntityProjectionTransformer(4326, databaseSrid);
- var entityHandler = entityGeometryBuilder.andThen(entityProjectionTransformer);
+ var entityHandler = entityGeometryHandler.andThen(entityProjectionTransformer);
var blockEntitiesHandler = new BlockEntitiesHandler(entityHandler);
- var blockHandler =
- coordinateMapBuilder.andThen(referenceMapBuilder).andThen(blockEntitiesHandler);
- var blockMapper = consumeThenReturn(blockHandler);
+ var blockMapper = consumeThenReturn(blockEntitiesHandler);
var blockImporter =
new BlockImporter(headerRepository, nodeRepository, wayRepository, relationRepository);
try (InputStream inputStream = Files.newInputStream(path)) {
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java
index 38ba64fb..b0e1492b 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/CoordinateMapBuilder.java
@@ -16,13 +16,12 @@ package org.apache.baremaps.openstreetmap.function;
import java.util.function.Consumer;
import org.apache.baremaps.collection.LongDataMap;
-import org.apache.baremaps.openstreetmap.model.Block;
-import org.apache.baremaps.openstreetmap.model.DataBlock;
-import org.apache.baremaps.stream.StreamException;
+import org.apache.baremaps.openstreetmap.model.Entity;
+import org.apache.baremaps.openstreetmap.model.Node;
import org.locationtech.jts.geom.Coordinate;
/** A consumer that stores openstreetmap coordinates in a map. */
-public class CoordinateMapBuilder implements Consumer<Block> {
+public class CoordinateMapBuilder implements Consumer<Entity> {
private final LongDataMap<Coordinate> coordinateMap;
@@ -37,16 +36,9 @@ public class CoordinateMapBuilder implements Consumer<Block> {
/** {@inheritDoc} */
@Override
- public void accept(Block block) {
- try {
- if (block instanceof DataBlock dataBlock) {
- dataBlock.getDenseNodes().stream().forEach(
- node -> coordinateMap.put(node.getId(), new Coordinate(node.getLon(), node.getLat())));
- dataBlock.getNodes().stream().forEach(
- node -> coordinateMap.put(node.getId(), new Coordinate(node.getLon(), node.getLat())));
- }
- } catch (Exception e) {
- throw new StreamException(e);
+ public void accept(Entity entity) {
+ if (entity instanceof Node node) {
+ coordinateMap.put(node.getId(), new Coordinate(node.getLon(), node.getLat()));
}
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java
index 8be71b0b..6f720b1d 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/ReferenceMapBuilder.java
@@ -17,12 +17,11 @@ package org.apache.baremaps.openstreetmap.function;
import java.util.List;
import java.util.function.Consumer;
import org.apache.baremaps.collection.LongDataMap;
-import org.apache.baremaps.openstreetmap.model.Block;
-import org.apache.baremaps.openstreetmap.model.DataBlock;
-import org.apache.baremaps.stream.StreamException;
+import org.apache.baremaps.openstreetmap.model.Entity;
+import org.apache.baremaps.openstreetmap.model.Way;
/** A consumer that stores openstreetmap references in a map. */
-public class ReferenceMapBuilder implements Consumer<Block> {
+public class ReferenceMapBuilder implements Consumer<Entity> {
private final LongDataMap<List<Long>> referenceMap;
@@ -37,13 +36,9 @@ public class ReferenceMapBuilder implements Consumer<Block> {
/** {@inheritDoc} */
@Override
- public void accept(Block block) {
- try {
- if (block instanceof DataBlock dataBlock) {
- dataBlock.getWays().stream().forEach(way -> referenceMap.put(way.getId(), way.getNodes()));
- }
- } catch (Exception e) {
- throw new StreamException(e);
+ public void accept(Entity entity) {
+ if (entity instanceof Way way) {
+ referenceMap.put(way.getId(), way.getNodes());
}
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfBlockReader.java b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfBlockReader.java
index 73011102..c23b9a9e 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfBlockReader.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfBlockReader.java
@@ -150,13 +150,13 @@ public class PbfBlockReader implements OsmReader<Block> {
var coordinateMapBuilder = new CoordinateMapBuilder(coordinateMap);
var referenceMapBuilder = new ReferenceMapBuilder(referenceMap);
var entityGeometryBuilder = new EntityGeometryBuilder(coordinateMap, referenceMap);
+ var entityGeometryHandler =
+ coordinateMapBuilder.andThen(referenceMapBuilder).andThen(entityGeometryBuilder);
var entityProjectionTransformer = new EntityProjectionTransformer(4326, srid);
- var entityHandler = srid == 4326 ? entityGeometryBuilder
- : entityGeometryBuilder.andThen(entityProjectionTransformer);
- var blockEntitiesHandler = new BlockEntitiesHandler(entityHandler);
- var blockHandler =
- coordinateMapBuilder.andThen(referenceMapBuilder).andThen(blockEntitiesHandler);
- var blockMapper = consumeThenReturn(blockHandler);
+ var entityProjectionHandler = srid == 4326 ? entityGeometryHandler
+ : entityGeometryHandler.andThen(entityProjectionTransformer);
+ var blockEntitiesHandler = new BlockEntitiesHandler(entityProjectionHandler);
+ var blockMapper = consumeThenReturn(blockEntitiesHandler);
blocks = blocks.map(blockMapper);
}
return blocks;