Ticket #1497 (closed enhancement: fixed)

Opened 4 months ago

Last modified 4 months ago

Optimize ST_AddEdge{Mod,New}Face detection of face splitting

Reported by: strk Owned by: strk
Priority: medium Milestone: PostGIS 2.0.0
Component: topology Version: trunk
Keywords: Cc:

Description

The current code in ST_AddEdge*Face uses ST_Polygonize to see if the newly added edge splits a face. The polygonization is the bottleneck.

By using GetRingEdge? instead, we could do it a lot faster. The same function could even be used to update left_face/right_face thus completely dropping the AddFace? call.

Change History

Changed 4 months ago by strk

  • owner changed from pramsey to strk
  • status changed from new to assigned
  • component changed from postgis to topology

Changed 4 months ago by strk

r8915 uses GetRingEdge? to detect split condition. Still not using the same to update left_face/right_face.

Changed 4 months ago by strk

  • status changed from assigned to closed
  • resolution set to fixed

r8958 completes the algorithm, r8958 switches over ST_AddEdgeNewFace, r8959 further improves the new internal function taking care of face splitting and r8961 fixes it against postgresql-9.1.

Note: See TracTickets for help on using tickets.