commit 72806560512d80cad986644f670ba018bfb62790 (tree)
parent eda24cb6bc206e860d83443987e5eceaa0199b43
Author: Motiejus Jakštys <motiejus@uber.com>
Date: Thu, 13 May 2021 19:52:18 +0300
bugfix when exaggerating bends
Diffstat:
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/IV/wm.sql b/IV/wm.sql
@@ -518,8 +518,7 @@ begin
for i in 1..array_length(attrs, 1) loop
if attrs[i].isolated and attrs[i].adjsize < desired_size then
bend = wm_exaggerate_bend2(bends[i], attrs[i].adjsize, desired_size);
-
- -- does bend intersect with the previous or next
+ -- Does bend intersect with the previous or next
-- intersect_patience bends? If they do, abort exaggeration for this one.
-- Do close-by bends intersect with this one? Special
@@ -564,8 +563,17 @@ begin
-- bend, because bends always share a line segment together this is
-- duplicated in a few places, because PostGIS does not allow (?)
-- mutating an array when passed to a function.
- bends[i-1] = st_removepoint(bends[i-1], st_npoints(bends[i-1])-1);
- bends[i+1] = st_removepoint(bends[i+1], 0);
+ bends[i-1] = st_addpoint(
+ st_removepoint(bends[i-1], st_npoints(bends[i-1])-1),
+ st_pointn(bends[i], 1),
+ -1
+ );
+
+ bends[i+1] = st_addpoint(
+ st_removepoint(bends[i+1], 0),
+ st_pointn(bends[i], st_npoints(bends[i])-1),
+ 0
+ );
if dbgname is not null then
insert into wm_debug (stage, name, gen, nbend, way) values(