Opened 17 years ago

Closed 9 years ago

#1613 closed defect (fixed)

OGR Interlis: parts of area boundarys are lost

Reported by: cmoe Owned by: pka
Priority: highest Milestone:
Component: OGR_SF Version: unspecified
Severity: normal Keywords: interlis
Cc: horst.duester@…

Description

Polygons of the interlis geometry type AREA are not drawn properly. Parts of the boundary are lost while joining the centroid with the boundary lines to polygon objects. The basic geometries ie the centroid and the boundary lines are correctly imported.

The error shows only if there are curved features in the ITF, which have to be converted to simple features Playing with system environment variable $ARC_DEGREE shows different error results.

Change History (4)

comment:1 by pka, 17 years ago

The poligonizer errors are probably caused by intersections of interpolated arcs. A possible solution is an interpolation with a given length of the segments instead of the ARC_DEGREE angle.

comment:2 by pka, 17 years ago

Horst was able to reproduce the problem using the Postgis polygonize function. It looks like a GEOS bug and has been reported to geos-devel

comment:3 by pka, 17 years ago

Implemented a workaround in r11992, suggested by Martin Davis from the GEOS team:

For lines, buffer(0) doesn't work, of course. One trick for noding line sets is to put all lines into a MultiLineString, and then union this with an empty geometry (or even better with an endpoint from one of the linestrings). This should return a MultiLineString with all the linework correctly noded. The lines can then be polygonized.

One place this last trick may not work is with linework which represents polygons with holes. Polygonize will return a coverage of polygons in this case, leaving it up to the user to decide which ones are really "inside" and which ones are actually holes.

The workaround does a union of the line collection with the first line, if the number of found polygons was less than expected.

comment:4 by pka, 9 years ago

Resolution: fixed
Status: newclosed

Should be solved :-)

Note: See TracTickets for help on using tickets.