[geos-devel] reduced test for big nasty buffer
strk at refractions.net
strk at refractions.net
Mon Feb 5 18:48:26 EST 2007
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 at geos.refractions.net
> http://geos.refractions.net/mailman/listinfo/geos-devel
--
() ASCII Ribbon Campaign
/\ Keep it simple!
-------------- next part --------------
<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>
More information about the geos-devel
mailing list