[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