From a3484ff5235c5acd0505b2c88519c30bf70bb7a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Rodrigo?= Date: Sun, 16 Jul 2023 14:47:53 +0200 Subject: [PATCH] On enableKeepPartialLinestring, output a closed linestring if the original way is closed even on missing start/end node #133 --- .../osmosis/pgsimple/v0_6/impl/WayGeometryBuilder.java | 5 +++++ .../osmosis/pgsnapshot/v0_6/impl/WayGeometryBuilder.java | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/osmosis-pgsimple/src/main/java/org/openstreetmap/osmosis/pgsimple/v0_6/impl/WayGeometryBuilder.java b/osmosis-pgsimple/src/main/java/org/openstreetmap/osmosis/pgsimple/v0_6/impl/WayGeometryBuilder.java index d0099d822..e3b651390 100644 --- a/osmosis-pgsimple/src/main/java/org/openstreetmap/osmosis/pgsimple/v0_6/impl/WayGeometryBuilder.java +++ b/osmosis-pgsimple/src/main/java/org/openstreetmap/osmosis/pgsimple/v0_6/impl/WayGeometryBuilder.java @@ -216,6 +216,11 @@ public LineString createWayLinestring(Way way, boolean enableKeepPartialLinestri } } + if (enableKeepPartialLinestring && way.isClosed() && linePoints.size() > 0 + && !linePoints.get(0).equals(linePoints.get(linePoints.size() - 1))) { + linePoints.add(linePoints.get(0)); + } + if (numValidNodes >= 2) { return createLinestring(linePoints); } else { diff --git a/osmosis-pgsnapshot/src/main/java/org/openstreetmap/osmosis/pgsnapshot/v0_6/impl/WayGeometryBuilder.java b/osmosis-pgsnapshot/src/main/java/org/openstreetmap/osmosis/pgsnapshot/v0_6/impl/WayGeometryBuilder.java index 557b8b0ca..62ee77d51 100644 --- a/osmosis-pgsnapshot/src/main/java/org/openstreetmap/osmosis/pgsnapshot/v0_6/impl/WayGeometryBuilder.java +++ b/osmosis-pgsnapshot/src/main/java/org/openstreetmap/osmosis/pgsnapshot/v0_6/impl/WayGeometryBuilder.java @@ -213,6 +213,12 @@ public LineString createWayLinestring(Way way, boolean enableKeepPartialLinestri } } } + + if (enableKeepPartialLinestring && way.isClosed() && linePoints.size() > 0 + && !linePoints.get(0).equals(linePoints.get(linePoints.size() - 1))) { + linePoints.add(linePoints.get(0)); + } + return createLinestring(linePoints); }