[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