[postgis-users] Buffer() creates invalid polygons??
Mark Fenbers
Mark.Fenbers at noaa.gov
Tue May 24 06:42:09 PDT 2005
Yes, I'll send these to you directly after I put a few comments which
could be helpful.
Also, I am willing to use the CVS version, but have never retrieved
software from a CVS, so I might need a little hand-holding...
I did test with IsValid() and the geometries passed even though they
failed in Difference()...
Mark
strk at refractions.net wrote:
>On Tue, May 24, 2005 at 09:28:10AM -0400, Mark Fenbers wrote:
>
>
>>PostGIS 1.0.0
>>GOES 2.1.1
>>Proj4 4.4.9
>>Mark
>>
>>
>
>Would you try branch-2-1 from CVS ?
>It would be GEOS 2.1.2 very soon.
>Also, did you make sure yor input geometries are valid (with IsValid) ?
>Finally, can you provide an sql file containing the failing query ?
>
>--strk;
>
>
>
>>strk at refractions.net wrote:
>>
>>
>>
>>>What GEOS version ?
>>>--strk;
>>>
>>>On Tue, May 24, 2005 at 07:52:40AM -0400, Mark Fenbers wrote:
>>>
>>>
>>>
>>>
>>>>I use the Buffer() function on a point to get a circular polygon
>>>>(hereafter just called "circle"). I then later subtract away a
>>>>rectangle (which partially overlaps the circle) using the Difference()
>>>>function. This fails for about 20% (4 of 20) of the circles I compute.
>>>>The error I get is:
>>>>
>>>>NOTICE: TopologyException: no outgoing dirEdge found
>>>>(-103879.654,348793.58)
>>>>ERROR: GEOS difference() threw an error
>>>>
>>>>I have found by accident that if I adjust the third argument to the
>>>>Buffer() function, the error goes away for some circles, yet appears for
>>>>others. For the 80% (16 of 20) of successes with the Difference()
>>>>function, I used circles computed from "Buffer(the_geom, 231500.0,
>>>>90)". If I use 91 instead of 90, then I can get 2 or 3 (of the four
>>>>that failed) to work without failing in the Difference() function, but
>>>>then 2 or three others fail that had worked when the third Buffer() arg
>>>>was set to 90.
>>>>
>>>>Eventually, I got all 20 of the circles to work using the Difference()
>>>>function, but I had to run the query one circle at a time, and play with
>>>>the value of Buffer()'s third arg until I found a value that worked for
>>>>that particular circle. I shouldn't have to do this and suspect the
>>>>problem is a bug. If needed, I can produce the SQL and the table
>>>>containing the points.
>>>>
>>>>I am positive the problem is with the circles, and not the rectangles
>>>>I'm subtracting from them, because when the Difference() function fails
>>>>for a particular circle, it fails no matter what rectangle I use, and
>>>>when I "fix" the circle by adjusting Buffer()'s third arg, it works for
>>>>any rectangle I throw at it...
>>>>
>>>>Oh, I almost forgot to mention what the subject line refers to... Even
>>>>when the Difference() function fails (and other functions like
>>>>Intersection, GeomUnion, and SymDifference() fail also), the IsValid()
>>>>function reports that the polygon *IS* a valid geometry. I've made sure
>>>>that both the circle and the rectangle pass the IsValid() test before
>>>>feeding them to the Difference() function, but for some circles,
>>>>Difference() still fails. I don't mean to pick on the Difference()
>>>>function as I think the problem exists in the Buffer() function
>>>>instead. But I'll leave this for experts to determine...
>>>>
>>>>Mark
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>>>>_______________________________________________
>>>>postgis-users mailing list
>>>>postgis-users at postgis.refractions.net
>>>>http://postgis.refractions.net/mailman/listinfo/postgis-users
>>>>
>>>>
>>>>
>>>>
>>>_______________________________________________
>>>postgis-users mailing list
>>>postgis-users at postgis.refractions.net
>>>http://postgis.refractions.net/mailman/listinfo/postgis-users
>>>
>>>
>>>
>>>
>>>
>
>
>
>
>>_______________________________________________
>>postgis-users mailing list
>>postgis-users at postgis.refractions.net
>>http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>>
>
>_______________________________________________
>postgis-users mailing list
>postgis-users at postgis.refractions.net
>http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Mark.Fenbers.vcf
Type: text/x-vcard
Size: 283 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20050524/b293ee18/attachment.vcf>
More information about the postgis-users
mailing list