[PostGIS] #6034: Missing node when adding overlapping line

PostGIS trac at osgeo.org
Thu Jan 15 01:50:51 PST 2026


#6034: Missing node when adding overlapping line
--------------------------------+-------------------
  Reporter:  Lars Aksel Opsahl  |      Owner:  strk
      Type:  defect             |     Status:  new
  Priority:  medium             |  Milestone:
 Component:  topology           |    Version:  3.6.x
Resolution:                     |   Keywords:
--------------------------------+-------------------
Description changed by strk:

Old description:

> When adding two lines with a overlapping parts like this.
>

> {{{
> SELECT topology.CreateTopology ('edge_test_01', 4258 , 1e-06);
> SELECT *  FROM
> topology.TopoGeo_addLinestring('edge_test_01','0102000020A21000001200000068327ABAA20F2E40065043A442D65040921E91F9370F2E40D919AF2C41D6504060224497020F2E4070FDC4B43FD65040D23D9393020F2E40CBFA843C3ED650402E8D07F1FA0E2E4062BC63223DD650407810A1AFEB0E2E40344261663CD650400A826F30CD0E2E4084E48E663CD65040D491F494880E2E40B8821B813DD65040149ACC0E6A0E2E40542DD1903AD650402F99B9F3C90D2E40B0A9B2913AD650400E6FB093940D2E400481E0D539D65040BC705590940D2E40C3DCA55D38D65040D87C88CCA30D2E40F4BE55E536D6504062934948C20D2E409527F06C35D65040EA83FD022D0E2E405BD339B034D65040B2B377793F0F2E40B939AFAE34D65040AE91F5FF5D0F2E4055D2EE9E37D650404C570E7933102E402FF6A19D37D65040',1e-06);
> SELECT *  FROM
> topology.TopoGeo_addLinestring('edge_test_01','0102000020A2100000030000004C570E7933102E402FF6A19D37D6504068327ABAA20F2E40E8A7839E37D6504068327ABAA20F2E40065043A442D65040',1e-06);
>

> }}}
>
> We end with two completely separate edges. This is know problem yes but
> we need to solve this in way.
>
> The problem is also a kind random for the user, because if we change
> order it works OK.
>
> SELECT topology.CreateTopology ('edge_test_02', 4258 , 1e-06);
> SELECT *  FROM
> topology.TopoGeo_addLinestring('edge_test_02','0102000020A2100000030000004C570E7933102E402FF6A19D37D6504068327ABAA20F2E40E8A7839E37D6504068327ABAA20F2E40065043A442D65040',1e-06);
> SELECT *  FROM
> topology.TopoGeo_addLinestring('edge_test_02','0102000020A21000001200000068327ABAA20F2E40065043A442D65040921E91F9370F2E40D919AF2C41D6504060224497020F2E4070FDC4B43FD65040D23D9393020F2E40CBFA843C3ED650402E8D07F1FA0E2E4062BC63223DD650407810A1AFEB0E2E40344261663CD650400A826F30CD0E2E4084E48E663CD65040D491F494880E2E40B8821B813DD65040149ACC0E6A0E2E40542DD1903AD650402F99B9F3C90D2E40B0A9B2913AD650400E6FB093940D2E400481E0D539D65040BC705590940D2E40C3DCA55D38D65040D87C88CCA30D2E40F4BE55E536D6504062934948C20D2E409527F06C35D65040EA83FD022D0E2E405BD339B034D65040B2B377793F0F2E40B939AFAE34D65040AE91F5FF5D0F2E4055D2EE9E37D650404C570E7933102E402FF6A19D37D65040',1e-06);
>
> it would be nice that result should not depend so much on the order of
> adding lines.

New description:

 When adding two lines with a overlapping parts like this.


 {{{
 SELECT topology.CreateTopology ('edge_test_01', 4258 , 1e-06);
 SELECT *  FROM
 topology.TopoGeo_addLinestring('edge_test_01','0102000020A21000001200000068327ABAA20F2E40065043A442D65040921E91F9370F2E40D919AF2C41D6504060224497020F2E4070FDC4B43FD65040D23D9393020F2E40CBFA843C3ED650402E8D07F1FA0E2E4062BC63223DD650407810A1AFEB0E2E40344261663CD650400A826F30CD0E2E4084E48E663CD65040D491F494880E2E40B8821B813DD65040149ACC0E6A0E2E40542DD1903AD650402F99B9F3C90D2E40B0A9B2913AD650400E6FB093940D2E400481E0D539D65040BC705590940D2E40C3DCA55D38D65040D87C88CCA30D2E40F4BE55E536D6504062934948C20D2E409527F06C35D65040EA83FD022D0E2E405BD339B034D65040B2B377793F0F2E40B939AFAE34D65040AE91F5FF5D0F2E4055D2EE9E37D650404C570E7933102E402FF6A19D37D65040',1e-06);
 SELECT *  FROM
 topology.TopoGeo_addLinestring('edge_test_01','0102000020A2100000030000004C570E7933102E402FF6A19D37D6504068327ABAA20F2E40E8A7839E37D6504068327ABAA20F2E40065043A442D65040',1e-06);


 }}}

 We end with two completely separate edges. This is know problem yes but we
 need to solve this in way.

 The problem is also a kind random for the user, because if we change order
 it works OK.

 {{{
 SELECT topology.CreateTopology ('edge_test_02', 4258 , 1e-06);
 SELECT *  FROM
 topology.TopoGeo_addLinestring('edge_test_02','0102000020A2100000030000004C570E7933102E402FF6A19D37D6504068327ABAA20F2E40E8A7839E37D6504068327ABAA20F2E40065043A442D65040',1e-06);
 SELECT *  FROM
 topology.TopoGeo_addLinestring('edge_test_02','0102000020A21000001200000068327ABAA20F2E40065043A442D65040921E91F9370F2E40D919AF2C41D6504060224497020F2E4070FDC4B43FD65040D23D9393020F2E40CBFA843C3ED650402E8D07F1FA0E2E4062BC63223DD650407810A1AFEB0E2E40344261663CD650400A826F30CD0E2E4084E48E663CD65040D491F494880E2E40B8821B813DD65040149ACC0E6A0E2E40542DD1903AD650402F99B9F3C90D2E40B0A9B2913AD650400E6FB093940D2E400481E0D539D65040BC705590940D2E40C3DCA55D38D65040D87C88CCA30D2E40F4BE55E536D6504062934948C20D2E409527F06C35D65040EA83FD022D0E2E405BD339B034D65040B2B377793F0F2E40B939AFAE34D65040AE91F5FF5D0F2E4055D2EE9E37D650404C570E7933102E402FF6A19D37D65040',1e-06);
 }}}

 it would be nice that result should not depend so much on the order of
 adding lines.

--
-- 
Ticket URL: <https://trac.osgeo.org/postgis/ticket/6034#comment:4>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.


More information about the postgis-tickets mailing list