Opened 10 years ago

Closed 3 years ago

#3042 closed enhancement (fixed)

Add edge-linking checks in ValidateTopology

Reported by: strk Owned by: strk
Priority: medium Milestone: PostGIS 3.2.0
Component: topology Version: master
Keywords: Cc: remic

Description

The ValidateTopology function does not currently check if edge linking is correct. It probably should.

See http://trac.osgeo.org/postgis/ticket/1224#comment:5

Change History (10)

comment:1 by strk, 9 years ago

Milestone: PostGIS 2.2.0PostGIS Future

comment:2 by robe, 7 years ago

Milestone: PostGIS FuturePostGIS Fund Me

Milestone renamed

comment:3 by strk, 4 years ago

For reference, #4709 is a bad consequence (backend crash) of a topology with edge-linking corruption, so dealing with it with ValidateTopology becomes more important.

comment:4 by Sandro Santilli <strk@…>, 4 years ago

In 2ce98e2/git:

Handle non-closed edge rings by human readable error

Handle both topological and geometrical corruption

Have getRingEdges raise an error if topology is corrupted

References #4709
References #3042

comment:5 by Lars Aksel Opsahl, 4 years ago

Another problem with function is that uses a lot of time .

Does make a sense to make optimal parameter bbox to limit the area to check ?

comment:6 by strk, 4 years ago

There are a number of validity checks that could be performed within a limited bounding box yes, I'm thinking of:

  • Edge linking (for all nodes falling in the bbox)
  • Consistent side-labelling for linked edges

comment:7 by strk, 4 years ago

Milestone: PostGIS Fund MePostGIS 3.2.0

Remi: where can your rc_RecomputeEdgeLinking function be found ? It'd be interesting to look at it now :)

comment:8 by Sandro Santilli <strk@…>, 4 years ago

In ac60803/git:

Enhance test for topology edge side faces

  • Also check non-isolated ones
  • Catch universal face containment (only in non-boundary case)

Closes #4830 again

Includes more testcases and updates pre-existing one expectance.

The only missing check now is for dangling edges advertising
the universal face on only ONE side. We cannot easily check
this becase we'd expect such edge to be only contaied by a face
and it will be, even if both sides are in the _same_ face.
This case can only be determined by edge-linking checking
(references #3042)

comment:9 by strk, 3 years ago

For the record: I filed #4942 to provide a RecomputeEdgeLinking function, to go with the new check

comment:10 by Sandro Santilli <strk@…>, 3 years ago

Resolution: fixed
Status: newclosed

In 68b17cd/git:

Add edge linking validation to ValidateTopology

Closes #3042
Includes regression tests

Note: See TracTickets for help on using tickets.