Advertisement
Guest User

corrupted topology

a guest
Aug 26th, 2022
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PostgreSQL 2.20 KB | Source Code | 0 0
  1. DROP TABLE IF EXISTS lines;
  2. CREATE TABLE lines
  3. (
  4.     id   serial PRIMARY KEY,
  5.     geom geometry(LINESTRINGZ, 3763) NOT NULL
  6. );
  7.  
  8. CREATE INDEX idx_lines_geom ON lines USING gist (geom);
  9.  
  10. INSERT INTO lines (geom)
  11. VALUES ('01EA0300000600000000000000C8C4F0400AD7A370C98D064148E17A14AE8B77403333333307C5F0400AD7A370C98D064166666666668A774048E17A1406C5F0403E0AD7A3A68D064148E17A14AE8777406666666626C5F040D7A3703DA08D0641AE47E17A14567740295C8FC235C5F040295C8FC2BF8D0641713D0AD7A350774066666666FEC4F040B81E85EBD78D0641713D0AD7A3507740'), -- replace with the line below to have no error
  12.        -- ('01020000A0B30E00000700000000000000C8C4F0400AD7A370C98D064148E17A14AE8B7740F6285C8FE6C4F0400AD7A370C98D0641295C8FC2F58A77403333333307C5F0400AD7A370C98D064166666666668A774048E17A1406C5F0403E0AD7A3A68D064148E17A14AE8777406666666626C5F040D7A3703DA08D0641AE47E17A14567740295C8FC235C5F040295C8FC2BF8D0641713D0AD7A350774066666666FEC4F040B81E85EBD78D0641713D0AD7A3507740'), -- this line has a vertex on intersection so there's no error
  13.        ('01020000A0B30E00000200000066666666FEC4F040B81E85EBD78D0641713D0AD7A3507740F6285C8FE6C4F0400AD7A370C98D06410000000000607740');
  14.  
  15.  
  16.  
  17. SELECT topology.droptopology('lines_topo')
  18. WHERE exists(SELECT * FROM topology.topology WHERE name = 'lines_topo');
  19. SELECT topology.createtopology('lines_topo', 3763, 0, TRUE);
  20. SELECT topology.addtopogeometrycolumn('lines_topo', 'public', 'lines', 'topo', 'LINE');
  21.  
  22. DO
  23. $$
  24.     DECLARE
  25.         id_line integer;
  26.     BEGIN
  27.         FOR id_line IN SELECT id FROM lines ORDER BY id
  28.             LOOP
  29.                 BEGIN
  30.                        -- add nodes beforehand
  31. --                     PERFORM topology.topogeo_addpoint('lines_topo', st_startpoint(geom), 0), topology.topogeo_addpoint('lines_topo', st_endpoint(geom), 0)
  32. --                     FROM lines
  33. --                     WHERE lines.id = id_line;
  34.  
  35.                     UPDATE lines
  36.                     SET topo = topology.totopogeom(geom, 'lines_topo', 1, 0)
  37.                     WHERE id = id_line;
  38.                 EXCEPTION
  39.                     WHEN OTHERS THEN
  40.                         RAISE WARNING 'Loading of record % failed: %', id_line, sqlerrm;
  41.                 END;
  42.             END LOOP;
  43.     END
  44. $$;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement