Further simplification of the testcase. This time it's hard to simplify more. A new information is that reordering vertexes in the disjoint triangle fixes the test ! (no more topology exception thrown) The topology exception is about unability of assigning a free hole to a shell. It seems like the triangle is in the wrong order. Indeed, running 'normalize' against the input geometry makes the buffer also succeed.
Martin, should BufferOp normalize input before proceeding ? --strk; On Mon, Feb 05, 2007 at 11:35:30PM +0100, strk wrote: > The attached XML is a reduced version of the badguy.xml file. > It's reduced to a single MultiPolygon with 2 elements in it. > Running Buffer(0) on each element is fine, doing it > on both results in robustness problems. > Interesting enough, the two elements are disjoint ! > Note also that using geomunion(1st, 2nd) is also fine. > > Background for the list: we're tracking this before > releasing the final 3.0.0, so if you feel like helping > out you're welcome :) > > --strk; > > <run> > <!--precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/--> > <precisionModel type="FLOATING"/> > <case> > > <desc> > Extract from Big Bad Nasty buffer. > Note that buffer(0) on the two distinct elements in the MultiPoligon > work w/out problems. Also note that the two elements seems completely > disjoint ! > </desc> > > <a> > MULTIPOLYGON( > > ((3135840.75 > 10098400,3135830.96130326 10098338.1966011,3135802.55339888 > 10098282.4429495,3135758.30705046 10098238.1966011,3135702.55339888 > 10098209.7886967,3135640.75 10098200,3135578.94660112 > 10098209.7886967,3135523.19294954 10098238.1966011,3135478.94660112 > 10098282.4429495,3135450.53869674 10098338.1966011,3135440.75 > 10098400,3135450.53869674 10098461.8033989,3135478.94660112 > 10098517.5570505,3135523.19294954 10098561.8033989,3135578.94660112 > 10098590.2113033,3135640.75 10098600,3135702.55339888 > 10098590.2113033,3135758.30705046 10098561.8033989,3135802.55339888 > 10098517.5570505,3135830.96130326 10098461.8033989,3135840.75 > 10098400)) > , > > ((3129627.91469263 10098250.224858,3129626.69660112 > 10098251.4429495,3129598.28869674 10098307.1966011,3129588.5 > 10098369,3129598.28869674 10098430.8033989,3129626.69660112 > 10098486.5570505,3129670.94294954 10098530.8033989,3129726.69660112 > 10098559.2113033,3129788.5 10098569,3129810.4193904 > 10098565.5283096,3129801 10098625,3129810.78869674 > 10098686.8033989,3129839.19660112 10098742.5570505,3129883.44294954 > 10098786.8033989,3129919.80510414 10098805.330842,3129934.69660112 > 10098834.5570505,3129978.94294954 10098878.8033989,3130034.69660112 > 10098907.2113033,3130096.5 10098917,3130158.30339888 > 10098907.2113033,3130214.05705046 10098878.8033989,3130258.30339888 > 10098834.5570505,3130266.10886759 10098819.2379556,3130311.19660112 > 10098842.2113033,3130373 10098852,3130434.80339888 > 10098842.2113033,3130490.55705046 10098813.8033989,3130534.80339888 > 10098769.5570505,3130563.21130326 10098713.8033989,3130573 > 10098652,3130563.21130326 10098590.1966011,3130544.90273925 > 10098554.2640211,3130562.46130326 10098519.8033989,3130567.35775394 > 10098488.888426,3130580.59936041 10098482.1414905,3130624.84570883 > 10098437.8951421,3130653.25361321 10098382.1414905,3130663.04230996 > 10098320.3380916,3130653.25361321 10098258.5346927,3130624.84570883 > 10098202.7810411,3130580.59936041 10098158.5346927,3130524.84570883 > 10098130.1267883,3130463.04230996 10098120.3380916,3130401.23891108 > 10098130.1267883,3130390.18744187 10098135.7577932,3130393 > 10098118,3130383.21130326 10098056.1966011,3130354.80339888 > 10098000.4429495,3130344.48544933 10097990.125,3130369.05339888 > 10097965.5570505,3130397.46130326 10097909.8033989,3130407.25 > 10097848,3130398.37773376 10097791.9827156,3130424.80339888 > 10097765.5570505,3130453.21130326 10097709.8033989,3130463 > 10097648,3130453.21130326 10097586.1966011,3130424.80339888 > 10097530.4429495,3130380.55705046 10097486.1966011,3130324.80339888 > 10097457.7886967,3130263 10097448,3130201.19660112 > 10097457.7886967,3130145.44294954 10097486.1966011,3130101.19660112 > 10097530.4429495,3130072.78869674 10097586.1966011,3130069.4873263 > 10097607.0406337,3130055.44294954 10097614.1966011,3130011.19660112 > 10097658.4429495,3129982.78869674 10097714.1966011,3129973 > 10097776,3129982.78869674 10097837.8033989,3130000.7008544 > 10097872.9579877,3129962.94294954 10097892.1966011,3129918.69660112 > 10097936.4429495,3129890.28869674 10097992.1966011,3129887.47014519 > 10098009.9922353,3129867.44294954 10098020.1966011,3129831.00519077 > 10098056.6343599,3129827 10098056,3129765.19660112 > 10098065.7886967,3129709.44294954 10098094.1966011,3129665.19660112 > 10098138.4429495,3129636.78869674 10098194.1966011,3129627.91469263 > 10098250.224858) > , (3130240.39640351 10098310.4931472,3130210.44660112 > 10098340.4429495,3130206.75048368 10098347.6969885,3130170.44294954 > 10098366.1966011,3130160.73585624 10098375.9036944,3130136.55339888 > 10098328.4429495,3130127.23544933 10098319.125,3130137.19853339 > 10098309.1619159,3130193 10098318,3130240.39640351 > 10098310.4931472) > ) > > ) > </a> > > <test> > > <!--op name="buffer" arg1="a" arg3="0.000000001"--> > <op name="buffer" arg1="a" arg3="0"> > GEOMETRYCOLLECTION EMPTY > </op> > > </test> > </case> > </run> > _______________________________________________ > geos-devel mailing list > geos-devel@geos.refractions.net > http://geos.refractions.net/mailman/listinfo/geos-devel -- () ASCII Ribbon Campaign /\ Keep it simple!
<run> <!--precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/--> <precisionModel type="FLOATING"/> <case> <desc> Extreme simplification of the Big Bad Nasty buffer. If the first element is reordered backward, things are fine !! </desc> <a> MULTIPOLYGON((( 3135840 10098400, 3135702 10098200, 3135830 10098461, 3135840 10098400 )) , (( 3129627 10098250, 3130490 10098813, 3130663 10098320, 3130263 10097448, 3129627 10098250 ),( 3130240 10098310, 3130210 10098340, 3130193 10098318, 3130240 10098310 ))) </a> <test> <!--op name="buffer" arg1="a" arg3="0.000000001"--> <op name="buffer" arg1="a" arg3="0"> MULTIPOLYGON((( 3135840 10098400, 3135702 10098200, 3135830 10098461, 3135840 10098400 )) , (( 3129627 10098250, 3130490 10098813, 3130663 10098320, 3130263 10097448, 3129627 10098250 ),( 3130240 10098310, 3130210 10098340, 3130193 10098318, 3130240 10098310 ))) </op> </test> </case> </run>
_______________________________________________ geos-devel mailing list geos-devel@geos.refractions.net http://geos.refractions.net/mailman/listinfo/geos-devel