[gdal-dev] problem with CloseRings

Frank Warmerdam warmerdam at pobox.com
Wed Aug 22 09:48:49 PDT 2012


Oliver,

The problem with your rings isn't that they are not closed, it is that
they are degenerate.

For instance:
(559560.19 142169.94,559550.64 142173.43,559560.19 142169.94)

This goes from PointA to PointB back to PointA.  It is closed, it just
is degenerate.  It has no area.  I'm not aware of a super easy way of
cleaning out such junk rings - you might need to explicitly test them
and remove them if they are degenerate.

Best regards,

On Wed, Aug 22, 2012 at 9:13 AM, Oliver Christen
<oliver.christen at camptocamp.com> wrote:
> dear community
>
> first of all please accept my apologies if this is not the correct
> place to ask about such question.
>
> I am trying to manipulate some geometric data using the gdal/ogr
> python lib and Im facing a problem when trying to transform invalid
> ring into valid ring.
>
> I have polygons with unclosed holes and I expected the CloseRings
> function to solve this for me, but unfortunately, that functions
> doesnt seem to do anything (in my case).
>
> see below for a simply python testcase,
>
> if you could tell me if I am possibly not using that function
> correctly or if there is a more correct way to do that, you would be
> very welcome
>
> using python version 2.6.6
> osgeo ogr lib version 1.3.40
>
> thank you very much for your attention
> best regards
> Oliver
>
> from osgeo import ogr
>
> wkt = "POLYGON ((559577.81 142165.04,559577.67 142161.79,559577.66
> 142161.16,559577.18 142139.0,559564.07 142140.84,559562.99
> 142132.4,559556.42 142134.85,559556.47 142134.96,559541.39
> 142140.58,559549.54 142162.4,559547.0200406529475
> 142163.310114102292573,559550.570425555342808
> 142173.455536680703517,559577.81 142165.04),(559559.95600777247455
> 142169.280249390256358,559550.996165407239459
> 142172.552877245907439,559550.996165407355875
> 142172.552877245907439,559547.909677243907936
> 142163.733065433305455,559550.443360350676812
> 142162.817994827404618,559542.290859716595151
> 142140.991299878398422,559557.417905980604701
> 142135.353766721702414,559557.367843619547784
> 142135.243629527511075,559562.407678314950317
> 142133.364239115995588,559563.465598454349674
> 142141.631689094298054,559576.497222575126216
> 142139.80268921770039,559576.960120304953307
> 142161.173134415294044,559576.970239149406552
> 142161.810621617711149,559577.084823867655359
> 142164.470624003995908,559577.084823867655359
> 142164.470624004025012,559570.876975534367375
> 142165.896950183814624,559564.754505693446845
> 142167.653979024267755,559564.75450569356326
> 142167.653979024296859,559559.956007772590965
> 142169.280249390256358,559559.95600777247455
> 142169.280249390256358),(559560.19 142169.94,559550.64
> 142173.43,559560.19 142169.94),(559564.97 142168.32,559560.19
> 142169.94,559564.97 142168.32),(559577.810000000172295
> 142165.04,559571.34395208011847 142166.499739240010967,559564.97
> 142168.32,559577.810000000172295 142165.04))"
>
> poly = ogr.CreateGeometryFromWkt(wkt)
>
> poly.IsValid()
> ERROR 1: IllegalArgumentException: Invalid number of points in
> LinearRing found 3 - must be 0 or >= 4
> False
>
> poly.CloseRings()
>
> poly.IsValid()
> ERROR 1: IllegalArgumentException: Invalid number of points in
> LinearRing found 3 - must be 0 or >= 4
> False
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev



-- 
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Software Developer


More information about the gdal-dev mailing list