fix bug in tests: detect_bends() works only on lines
This commit is contained in:
parent
e9d1587c8e
commit
fb4a3eac6d
25
tests.sql
25
tests.sql
@ -25,10 +25,10 @@ insert into figures (name, way) values ('fig5',ST_GeomFromText('LINESTRING(0 39,
|
||||
insert into figures (name, way) values ('fig6',ST_GeomFromText('LINESTRING(84 47,91 59,114 64,122 80,116 92,110 93,106 106,117 118,136 107,135 76,120 45,125 39,141 39,147 32)'));
|
||||
insert into figures (name, way) values ('fig6-rev',ST_Reverse(ST_Translate((select way from figures where name='fig6'), 60, 0)));
|
||||
insert into figures (name, way) values ('fig6-combi',
|
||||
ST_LineMerge(ST_Union(
|
||||
ST_Union(
|
||||
ST_Translate((select way from figures where name='fig6'), 0, 90),
|
||||
ST_Translate((select way from figures where name='fig6'), 80, 90)
|
||||
))
|
||||
)
|
||||
);
|
||||
insert into figures (name, way) values ('inflection-1',ST_GeomFromText('LINESTRING(110 24,114 20,133 20,145 15,145 0,136 5,123 7,114 7,111 2)'));
|
||||
insert into figures (name, way) values ('multi-island',ST_GeomFromText('MULTILINESTRING((-15 10,-10 10,-5 11,0 11,5 11,10 10,11 9,13 10,15 9),(-5 11,-2 15,0 16,2 15,5 11))'));
|
||||
@ -64,7 +64,7 @@ $$ language plpgsql;
|
||||
-- COMBINED
|
||||
drop table if exists demo_wm;
|
||||
create table demo_wm (name text, i bigint, way geometry);
|
||||
insert into demo_wm (name, way) select name, ST_SimplifyWM(way, name) from figures where name='fig6-combi';
|
||||
insert into demo_wm (name, way) select name, ST_SimplifyWM(way, name) from figures;
|
||||
|
||||
do $$
|
||||
declare
|
||||
@ -125,25 +125,10 @@ begin
|
||||
) from (select unnest(vcrossings) way) a)
|
||||
);
|
||||
|
||||
elems1 = array((select way from debug_wm where stage='cinflections' and name='fig6-combi' and gen=1));
|
||||
elems2 = (select ways from inflections where name='fig6-combi');
|
||||
|
||||
foreach elem in array elems1 loop
|
||||
raise notice 'elem 1: %', st_astext(elem);
|
||||
end loop;
|
||||
|
||||
foreach elem in array elems2 loop
|
||||
raise notice 'elem 2: %', st_astext(elem);
|
||||
end loop;
|
||||
|
||||
|
||||
select (self_crossing(elems1)).* into vcrossings, mutated;
|
||||
--select (self_crossing(elems2)).* into vcrossings, mutated;
|
||||
--select (self_crossing((select ways from inflections where name='fig6-combi'))).* into vcrossings, mutated;
|
||||
--select (self_crossing(array((select way from debug_wm where stage='cinflections' and name='fig6-combi')))).* into vcrossings, mutated;
|
||||
select (self_crossing(array((select way from debug_wm where stage='cinflections' and name='fig6-combi' and gen=1)))).* into vcrossings, mutated;
|
||||
perform assert_equals(true, mutated);
|
||||
perform assert_equals(
|
||||
'LINESTRING(84 137,91 149,114 154,120 135,125 129,141 129,147 122,164 137,171 149,194 154,200 135,205 129,221 129,227 122)',
|
||||
'MULTILINESTRING((84 137,91 149,114 154,120 135,125 129,141 129,147 122),(164 137,171 149,194 154,200 135,205 129,221 129,227 122))',
|
||||
(select st_astext(
|
||||
st_linemerge(st_union(way))
|
||||
) from (select unnest(vcrossings) way) a)
|
||||
|
21
wm.sql
21
wm.sql
@ -13,7 +13,13 @@ declare
|
||||
bend geometry;
|
||||
prev_sign int4;
|
||||
cur_sign int4;
|
||||
l_type text;
|
||||
begin
|
||||
--l_type = st_geometrytype(line);
|
||||
--if l_type != 'ST_LineString' then
|
||||
-- raise 'This function works with ST_LineString, got %', l_type;
|
||||
--end if;
|
||||
|
||||
-- The last vertex is iterated over twice, because the algorithm uses 3
|
||||
-- vertices to calculate the angle between them.
|
||||
--
|
||||
@ -323,7 +329,7 @@ $$ language plpgsql;
|
||||
drop function if exists ST_SimplifyWM;
|
||||
create function ST_SimplifyWM(geom geometry, dbgname text default null) returns geometry as $$
|
||||
declare
|
||||
dbg_stage integer;
|
||||
stagenum integer;
|
||||
i integer;
|
||||
line geometry;
|
||||
lines geometry[];
|
||||
@ -342,13 +348,13 @@ begin
|
||||
|
||||
for i in 1..array_length(lines, 1) loop
|
||||
mutated = true;
|
||||
dbg_stage = 1;
|
||||
stagenum = 1;
|
||||
while mutated loop
|
||||
if dbgname is not null then
|
||||
insert into debug_wm (stage, name, gen, nbend, way) values(
|
||||
'afigures',
|
||||
dbgname,
|
||||
dbg_stage,
|
||||
stagenum,
|
||||
i,
|
||||
lines[i]
|
||||
);
|
||||
@ -360,20 +366,19 @@ begin
|
||||
insert into debug_wm(stage, name, gen, nbend, way) values(
|
||||
'bbends',
|
||||
dbgname,
|
||||
dbg_stage,
|
||||
stagenum,
|
||||
generate_subscripts(bends, 1),
|
||||
unnest(bends)
|
||||
);
|
||||
end if;
|
||||
|
||||
raise notice 'before inflections: %', dbg_geomsummary(bends);
|
||||
bends = fix_gentle_inflections(bends);
|
||||
|
||||
if dbgname is not null then
|
||||
insert into debug_wm(stage, name, gen, nbend, way) values(
|
||||
'cinflections',
|
||||
dbgname,
|
||||
dbg_stage,
|
||||
stagenum,
|
||||
generate_subscripts(bends, 1),
|
||||
unnest(bends)
|
||||
);
|
||||
@ -385,7 +390,7 @@ begin
|
||||
insert into debug_wm(stage, name, gen, nbend, way) values(
|
||||
'dcrossings',
|
||||
dbgname,
|
||||
dbg_stage,
|
||||
stagenum,
|
||||
generate_subscripts(bends, 1),
|
||||
unnest(bends)
|
||||
);
|
||||
@ -393,7 +398,7 @@ begin
|
||||
|
||||
if mutated then
|
||||
lines[i] = st_linemerge(st_union(bends));
|
||||
dbg_stage = dbg_stage + 1;
|
||||
stagenum = stagenum + 1;
|
||||
continue;
|
||||
end if;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user