From 2b65295559d28b09defe09dfa8670fdf25be6bea Mon Sep 17 00:00:00 2001 From: Michael Barry Date: Wed, 31 Jul 2024 05:28:21 -0400 Subject: [PATCH] Vector tile feature ID method (#960) --- .../com/onthegomap/planetiler/reader/osm/OsmElement.java | 9 +++++++++ .../com/onthegomap/planetiler/reader/osm/OsmReader.java | 7 +------ .../planetiler/reader/osm/OsmRelationInfo.java | 4 ++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmElement.java b/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmElement.java index 8d2d89c9b4..8bb42e993f 100644 --- a/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmElement.java +++ b/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmElement.java @@ -235,4 +235,13 @@ public record Member( record Info(long changeset, long timestamp, int userId, int version, String user) { private static final int COST = 2; } + + static long vectorTileFeatureId(int multiplier, long id, Type type) { + return (id * multiplier) + switch (type) { + case OTHER -> 0; + case NODE -> 1; + case WAY -> 2; + case RELATION -> 3; + }; + } } diff --git a/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmReader.java b/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmReader.java index de4eabf7d5..48aaa573cd 100644 --- a/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmReader.java +++ b/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmReader.java @@ -646,12 +646,7 @@ public OsmFeature(OsmElement elem, boolean point, boolean line, boolean polygon, @Override public long vectorTileFeatureId(int multiplier) { - return (id() * multiplier) + switch (originalElement.type()) { - case OTHER -> 0; - case NODE -> 1; - case WAY -> 2; - case RELATION -> 3; - }; + return OsmElement.vectorTileFeatureId(multiplier, id(), originalElement.type()); } @Override diff --git a/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmRelationInfo.java b/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmRelationInfo.java index 5b0d0f1f80..c8fe583914 100644 --- a/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmRelationInfo.java +++ b/planetiler-core/src/main/java/com/onthegomap/planetiler/reader/osm/OsmRelationInfo.java @@ -15,4 +15,8 @@ public interface OsmRelationInfo extends MemoryEstimator.HasEstimate { default long estimateMemoryUsageBytes() { return 0; } + + default long vectorTileFeatureId(int multiplier) { + return OsmElement.vectorTileFeatureId(multiplier, id(), OsmElement.Type.RELATION); + } }