commit 69008a26f2b85ee8a56d42c902c2aa73faa90c68 (tree)
parent a2ceba380999bf9f21e5f31847af6486dad48cf5
Author: Motiejus Jakštys <motiejus@uber.com>
Date: Sat, 1 May 2021 16:20:01 +0300
better wm_debug
Diffstat:
2 files changed, 17 insertions(+), 19 deletions(-)
diff --git a/IV/tests-rivers.sql b/IV/tests-rivers.sql
@@ -109,4 +109,4 @@ end $$ language plpgsql;
delete from wm_debug where name in (select distinct name from wm_rivers);
delete from wm_demo where name in (select distinct name from wm_rivers);
-insert into wm_demo (name, way) select name, ST_SimplifyWM(way, 100, name) from wm_rivers;
+insert into wm_demo (name, way) select name, ST_SimplifyWM(way, 2000, name) from wm_rivers;
diff --git a/IV/wm.sql b/IV/wm.sql
@@ -260,6 +260,8 @@ $$ language plpgsql;
drop function if exists wm_self_crossing;
create function wm_self_crossing(
INOUT bends geometry[],
+ dbgname text default null,
+ dbggen integer default null,
OUT mutated boolean
) as $$
declare
@@ -313,6 +315,16 @@ begin
continue bendloop;
end loop;
end loop;
+
+ if dbgname is not null then
+ insert into wm_debug(stage, name, gen, nbend, way) values(
+ 'dcrossings',
+ dbgname,
+ dbggen,
+ generate_subscripts(bends, 1),
+ unnest(bends)
+ );
+ end if;
end
$$ language plpgsql;
@@ -599,12 +611,7 @@ begin
while mutated loop
if dbgname is not null then
insert into wm_debug (stage, name, gen, nbend, way) values(
- 'afigures',
- dbgname,
- gen,
- i,
- lines[i]
- );
+ 'afigures', dbgname, gen, i, lines[i]);
end if;
bends = wm_detect_bends(lines[i], dbgname, gen);
@@ -612,16 +619,6 @@ begin
select * from wm_self_crossing(bends) into bends, mutated;
- if dbgname is not null then
- insert into wm_debug(stage, name, gen, nbend, way) values(
- 'dcrossings',
- dbgname,
- gen,
- generate_subscripts(bends, 1),
- unnest(bends)
- );
- end if;
-
if mutated then
lines[i] = st_linemerge(st_union(bends));
gen = gen + 1;
@@ -632,7 +629,6 @@ begin
select * from wm_elimination(
bendattrs, dhalfcircle, dbgname, gen) into bendattrs, mutated;
-
if mutated then
for j in 1..array_length(bendattrs, 1) loop
bends[j] = bendattrs[j].bend;
@@ -642,7 +638,9 @@ begin
continue;
end if;
- perform wm_isolated_bends(bendattrs, dbgname, gen);
+ -- code to detect isolated bends is there, but bend exaggeration
+ -- is not implemented.
+ --perform wm_isolated_bends(bendattrs, dbgname, gen);
end loop;
end loop;