I forgot to post my working example of the "Nasty Buffer" bug
The commonality between the two examples are:
Multipolyon
first ring is
single closed ring with no holes
second or later ring is
contains the first ring in the Y dimension but has no overlap in
the X dimension
has a hole that overlaps the first ring in the Y dimension but
has no overlap in the X dimension
I have not been able to manually construct a new nasty bug with these
rules, so there is at least one additional rule
I don't see just yet.
I am currently digging in BufferOp.cpp around the routine find
StabbedSegments()
C.
<run>
<precisionModel type="FLOATING"/>
<case>
<desc>GEOS 3.0.0_rc4 bufferReducedPrecision</desc>
<a>
MULTIPOLYGON (
((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)),
((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000),
(2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661))
)
</a>
<test>
<op name="buffer" arg1="A" arg3=" 0.0">POINT(0 0)</op>
</test>
</case>
</run>
_______________________________________________
geos-devel mailing list
geos-devel@geos.refractions.net
http://geos.refractions.net/mailman/listinfo/geos-devel