#1654 closed defect (fixed)
Lines added to topology with a tolerance don't get snapped to isolated nodes
Reported by: | strk | Owned by: | strk |
---|---|---|---|
Priority: | medium | Milestone: | PostGIS 2.0.0 |
Component: | topology | Version: | 2.0.x |
Keywords: | Cc: |
Description
See this session:
SELECT CreateTopology('tt'); SELECT ST_AddIsoNode('tt', 0, 'POINT(0 0)'); SELECT TopoGeo_addLineString('tt', 'LINESTRING(-10 1, 10 1)', 2); SELECT TopologySummary('tt');
The linestring is at distance=1 from the point, should be snapped to it since we request tolerance=2.
Debugging:
strk=# SELECT TopoGeo_addLineString('tt', 'LINESTRING(-10 1, 10 1)', 2); DEBUG: Self-noded: LINESTRING(-10 1,10 1) DEBUG: WITH nearby AS ( SELECT e.geom FROM tt.edge e WHERE ST_DWithin(e.geom, '01020000000200000000000000000024C0000000000000F03F0000000000002440000000000000F03F'::geometry, 2) ) SELECT st_collect(geom) FROM nearby; DEBUG: WITH nearby AS ( SELECT n.geom FROM tt.node n WHERE ST_DWithin(n.geom, '01020000000200000000000000000024C0000000000000F03F0000000000002440000000000000F03F'::geometry, 2) ) SELECT (st_dump(st_unaryunion(st_collect(geom)))).geom FROM nearby; DEBUG: Split by POINT(0 0): MULTILINESTRING((-10 1,10 1))
So the code does realize it should _split_ the line, but fails at doing it because the point is not _on_ the line, a snap should fix.
Change History (6)
comment:1 by , 13 years ago
comment:2 by , 13 years ago
Summary: | Lines added to topology with a tolerance don't get properly snapped → Lines added to topology with a tolerance don't get snapped to isolated nodes |
---|
Alright I think they key here is about a missing snap to _isolated_ nodes, because all other nodes would be a snap target already being part of edges.
comment:3 by , 13 years ago
Replying to strk:
…. a snap should fix.
IMHO, if I understand correctly, it is right!
I added a line:
LINESTRING(-3 1,6 1)
then a point:
POINT(3 2)
and st_snap function returns:
LINESTRING(-3 1,3 2,6 1)
comment:5 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:6 by , 13 years ago
Note:
See TracTickets
for help on using tickets.
See #1650 for a real world case