[geos-commits] r4010 - trunk/tests/xmltester/tests
svn_geos at osgeo.org
svn_geos at osgeo.org
Wed Sep 17 00:36:19 PDT 2014
Author: strk
Date: 2014-09-17 00:36:19 -0700 (Wed, 17 Sep 2014)
New Revision: 4010
Modified:
trunk/tests/xmltester/tests/testLeaksBig.xml
Log:
Remove more duplicated tests
Tests were found in TestFunctionAA.xml, TestFunctionLA.xml
TestFunctionPA.xml TestFunctionPL.xml TestFunctionPP.xml
TestFunctionLLPrec.xml, TestRelatePP.xml
Modified: trunk/tests/xmltester/tests/testLeaksBig.xml
===================================================================
--- trunk/tests/xmltester/tests/testLeaksBig.xml 2014-09-16 16:53:34 UTC (rev 4009)
+++ trunk/tests/xmltester/tests/testLeaksBig.xml 2014-09-17 07:36:19 UTC (rev 4010)
@@ -10,1843 +10,6 @@
</case>
<case>
- <desc>AA - simple polygons</desc>
- <a>
- POLYGON(
- (10 10, 100 10, 100 100, 10 100, 10 10))
- </a>
- <b>
- POLYGON(
- (50 50, 200 50, 200 200, 50 200, 50 50))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- POLYGON(
- (50 50, 50 100, 100 100, 100 50, 50 50))
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- POLYGON(
- (10 10, 10 100, 50 100, 50 200, 200 200, 200 50, 100 50, 100 10, 10 10))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POLYGON(
- (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10)),
- (
- (50 100, 50 200, 200 200, 200 50, 100 50, 100 100, 50 100)))
- </op>
-</test>
-</case>
-
-<case>
- <desc>AA - A with hole intersecting B</desc>
- <a>
- POLYGON(
- (20 20, 20 160, 160 160, 160 20, 20 20),
- (140 140, 40 140, 40 40, 140 40, 140 140))
- </a>
- <b>
- POLYGON(
- (80 100, 220 100, 220 240, 80 240, 80 100))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- POLYGON(
- (80 140, 80 160, 160 160, 160 100, 140 100, 140 140, 80 140))
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- POLYGON(
- (20 20, 20 160, 80 160, 80 240, 220 240, 220 100, 160 100, 160 20, 20 20),
- (80 100, 80 140, 40 140, 40 40, 140 40, 140 100, 80 100))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POLYGON(
- (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100,
- 160 20, 20 20))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100,
- 160 20, 20 20)),
- (
- (80 100, 80 140, 140 140, 140 100, 80 100)),
- (
- (80 160, 80 240, 220 240, 220 100, 160 100, 160 160, 80 160)))
- </op>
-</test>
-</case>
-
-<case>
- <desc>AA - simple polygons #2</desc>
- <a>
- POLYGON(
- (20 340, 330 380, 50 40, 20 340))
- </a>
- <b>
- POLYGON(
- (210 320, 140 270, 0 270, 140 220, 210 320))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- POLYGON(
- (27 270, 140 270, 210 320, 140 220, 28 260, 27 270))
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- POLYGON(
- (20 340, 330 380, 50 40, 28 260, 0 270, 27 270, 20 340))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POLYGON(
- (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340)),
- (
- (27 270, 28 260, 0 270, 27 270)))
- </op>
-</test>
-</case>
-
-<case>
- <desc>AA - simple polygons intersecting in P, L and A</desc>
- <a>
- POLYGON(
- (0 0, 110 0, 110 60, 40 60, 180 140, 40 220, 110 260, 0 260, 0 0))
- </a>
- <b>
- POLYGON(
- (220 0, 110 0, 110 60, 180 60, 40 140, 180 220, 110 260, 220 260, 220 0))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(110 260),
- LINESTRING(110 0, 110 60),
- POLYGON(
- (110 100, 40 140, 110 180, 180 140, 110 100)))
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- POLYGON(
- (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0),
- (110 260, 40 220, 110 180, 180 220, 110 260),
- (110 100, 40 60, 110 60, 180 60, 110 100))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POLYGON(
- (110 0, 0 0, 0 260, 110 260, 40 220, 110 180, 40 140, 110 100, 40 60,
- 110 60, 110 0))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- POLYGON(
- (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0),
- (110 260, 40 220, 110 180, 180 220, 110 260),
- (110 180, 40 140, 110 100, 180 140, 110 180),
- (110 100, 40 60, 110 60, 180 60, 110 100))
- </op>
-</test>
-</case>
-
-<case>
- <desc>AA - simple polygons with two touching holes in their symDifference</desc>
- <a>
- POLYGON(
- (0 0, 120 0, 120 50, 50 50, 120 100, 50 150, 120 150, 120 190, 0 190,
- 0 0))
- </a>
- <b>
- POLYGON(
- (230 0, 120 0, 120 50, 190 50, 120 100, 190 150, 120 150, 120 190, 230 190,
- 230 0))
- </b>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- POLYGON(
- (120 0, 0 0, 0 190, 120 190, 230 190, 230 0, 120 0),
- (120 100, 50 50, 120 50, 190 50, 120 100),
- (120 100, 190 150, 120 150, 50 150, 120 100))
- </op>
-</test>
-</case>
-
-<case>
- <desc>AmA - A simple, symDiff contains inversion</desc>
- <a>
- POLYGON(
- (0 0, 210 0, 210 230, 0 230, 0 0))
- </a>
- <b>
- MULTIPOLYGON(
- (
- (40 20, 0 0, 20 40, 60 60, 40 20)),
- (
- (60 90, 60 60, 90 60, 90 90, 60 90)),
- (
- (70 120, 90 90, 100 120, 70 120)),
- (
- (120 70, 90 90, 120 100, 120 70)))
- </b>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- POLYGON(
- (0 0, 0 230, 210 230, 210 0, 0 0),
- (0 0, 40 20, 60 60, 20 40, 0 0),
- (60 60, 90 60, 90 90, 60 90, 60 60),
- (90 90, 120 70, 120 100, 90 90),
- (90 90, 100 120, 70 120, 90 90))
- </op>
-</test>
-</case>
-
-<case>
- <desc>AmA - A simple, B connected multiPolygon touching A at vertex</desc>
- <a>
- POLYGON(
- (0 0, 340 0, 340 300, 0 300, 0 0))
- </a>
- <b>
- MULTIPOLYGON(
- (
- (40 20, 0 0, 20 40, 60 60, 40 20)),
- (
- (60 100, 60 60, 100 60, 100 100, 60 100)))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (40 20, 0 0, 20 40, 60 60, 40 20)),
- (
- (60 60, 60 100, 100 100, 100 60, 60 60)))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- POLYGON(
- (0 0, 0 300, 340 300, 340 0, 0 0),
- (0 0, 40 20, 60 60, 20 40, 0 0),
- (60 60, 100 60, 100 100, 60 100, 60 60))
- </op>
-</test>
-</case>
-
-<case>
- <desc>AmA - A simple, B connected multiPolygon touching A at interior of edge</desc>
- <a>
- POLYGON(
- (0 0, 120 0, 120 120, 0 120, 0 0))
- </a>
- <b>
- MULTIPOLYGON(
- (
- (60 20, 0 20, 60 60, 60 20)),
- (
- (60 100, 60 60, 100 60, 100 100, 60 100)))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (60 20, 0 20, 60 60, 60 20)),
- (
- (60 60, 60 100, 100 100, 100 60, 60 60)))
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- POLYGON(
- (0 20, 0 120, 120 120, 120 0, 0 0, 0 20))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POLYGON(
- (0 20, 0 120, 120 120, 120 0, 0 0, 0 20),
- (0 20, 60 20, 60 60, 0 20),
- (60 60, 100 60, 100 100, 60 100, 60 60))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- POLYGON(
- (0 20, 0 120, 120 120, 120 0, 0 0, 0 20),
- (0 20, 60 20, 60 60, 0 20),
- (60 60, 100 60, 100 100, 60 100, 60 60))
- </op>
-</test>
-</case>
-
-<case>
- <desc>AA - simple polygons with holes</desc>
- <a>
- POLYGON(
- (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330),
- (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240))
- </a>
- <b>
- POLYGON(
- (300 330, 190 270, 150 170, 150 110, 250 30, 380 50, 380 250, 300 330),
- (290 240, 240 200, 240 110, 290 80, 330 170, 290 240))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- POLYGON(
- (251 104, 217 57, 176 89, 210 130, 210 210, 172 226, 190 270, 217 285, 260 250,
- 263 218, 240 200, 240 110, 251 104))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (217 57, 190 20, 60 40, 20 150, 60 260, 160 330, 217 285, 190 270, 172 226,
- 140 240, 80 190, 90 100, 160 70, 176 89, 217 57)),
- (
- (217 57, 251 104, 290 80, 330 170, 290 240, 263 218, 260 250, 217 285, 300 330,
- 380 250, 380 50, 250 30, 217 57)),
- (
- (263 218, 270 130, 251 104, 240 110, 240 200, 263 218)),
- (
- (172 226, 210 210, 210 130, 176 89, 150 110, 150 170, 172 226)))
- </op>
-</test>
-</case>
-
-<case>
- <desc>mAmA - complex polygons touching and overlapping</desc>
- <a>
- MULTIPOLYGON(
- (
- (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280,
- 200 200, 220 200, 220 340, 120 340)),
- (
- (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120,
- 220 120, 220 100, 360 100, 360 200)))
- </a>
- <b>
- MULTIPOLYGON(
- (
- (100 220, 100 200, 300 200, 300 220, 100 220)),
- (
- (280 180, 280 160, 300 160, 300 180, 280 180)),
- (
- (220 140, 220 120, 240 120, 240 140, 220 140)),
- (
- (180 220, 160 240, 200 240, 180 220)))
- </b>
-<test>
- <op name="getboundary" arg1="A">
- MULTILINESTRING(
- (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280,
- 200 200, 220 200, 220 340, 120 340),
- (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120,
- 220 120, 220 100, 360 100, 360 200))
- </op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POLYGON(
- (220 100, 120 200, 120 340, 220 340, 360 200, 360 100, 220 100))
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(200 240),
- LINESTRING(300 200, 220 200),
- LINESTRING(280 180, 300 180),
- LINESTRING(300 180, 300 160),
- LINESTRING(300 160, 280 160),
- LINESTRING(220 140, 240 140),
- LINESTRING(240 120, 220 120),
- POLYGON(
- (120 200, 120 220, 140 220, 140 200, 120 200)),
- POLYGON(
- (160 200, 160 220, 180 220, 180 200, 160 200)),
- POLYGON(
- (180 240, 180 220, 160 240, 180 240)),
- POLYGON(
- (200 200, 200 220, 220 220, 220 200, 200 200)))
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- POLYGON(
- (120 220, 120 340, 220 340, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100,
- 220 120, 220 140, 220 160, 280 160, 280 180, 220 180, 220 200, 200 200, 180 200, 160 200,
- 140 200, 120 200, 100 200, 100 220, 120 220),
- (200 240, 200 280, 180 280, 180 240, 200 240),
- (200 240, 180 220, 200 220, 200 240),
- (160 240, 160 280, 140 280, 140 220, 160 220, 160 240),
- (240 120, 300 120, 300 140, 240 140, 240 120))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240,
- 160 240, 160 280, 140 280, 140 220, 120 220)),
- (
- (160 220, 160 240, 180 220, 160 220)),
- (
- (300 200, 360 200, 360 100, 220 100, 220 120, 240 120, 300 120, 300 140, 240 140,
- 220 140, 220 160, 280 160, 300 160, 300 180, 280 180, 220 180, 220 200, 300 200)))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240,
- 160 240, 160 280, 140 280, 140 220, 120 220)),
- (
- (120 220, 120 200, 100 200, 100 220, 120 220)),
- (
- (140 200, 140 220, 160 220, 160 200, 140 200)),
- (
- (160 220, 160 240, 180 220, 160 220)),
- (
- (180 200, 180 220, 200 220, 200 200, 180 200)),
- (
- (180 220, 180 240, 200 240, 180 220)),
- (
- (220 200, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, 220 120, 220 140,
- 220 160, 280 160, 280 180, 220 180, 220 200),
- (240 120, 300 120, 300 140, 240 140, 240 120)))
- </op>
-</test>
-</case>
-
-<case>
- <desc>mAmA - complex polygons touching</desc>
- <a>
- MULTIPOLYGON(
- (
- (100 200, 100 180, 120 180, 120 200, 100 200)),
- (
- (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200,
- 160 220, 220 220, 220 240, 60 240),
- (80 220, 80 160, 140 160, 140 220, 80 220)),
- (
- (280 220, 240 180, 260 160, 300 200, 280 220)))
- </a>
- <b>
- MULTIPOLYGON(
- (
- (80 220, 80 160, 140 160, 140 220, 80 220),
- (100 200, 100 180, 120 180, 120 200, 100 200)),
- (
- (220 240, 220 220, 160 220, 160 200, 220 200, 220 180, 160 180, 160 160, 220 160,
- 220 140, 320 140, 320 240, 220 240),
- (240 220, 240 160, 300 160, 300 220, 240 220)))
- </b>
-<test>
- <op name="getboundary" arg1="A">
- MULTILINESTRING(
- (100 200, 100 180, 120 180, 120 200, 100 200),
- (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200,
- 160 220, 220 220, 220 240, 60 240),
- (80 220, 80 160, 140 160, 140 220, 80 220),
- (280 220, 240 180, 260 160, 300 200, 280 220))
- </op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POLYGON(
- (60 140, 60 240, 220 240, 280 220, 300 200, 260 160, 220 140, 60 140))
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(240 180),
- POINT(260 160),
- POINT(280 220),
- POINT(300 200),
- LINESTRING(100 200, 100 180),
- LINESTRING(100 180, 120 180),
- LINESTRING(120 180, 120 200),
- LINESTRING(120 200, 100 200),
- LINESTRING(220 140, 220 160),
- LINESTRING(220 160, 160 160),
- LINESTRING(160 160, 160 180),
- LINESTRING(160 180, 200 180),
- LINESTRING(200 200, 160 200),
- LINESTRING(160 200, 160 220),
- LINESTRING(160 220, 220 220),
- LINESTRING(220 220, 220 240),
- LINESTRING(80 220, 80 160),
- LINESTRING(80 160, 140 160),
- LINESTRING(140 160, 140 220),
- LINESTRING(140 220, 80 220))
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140),
- (200 200, 200 180, 220 180, 220 200, 200 200),
- (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)),
- (
- (240 180, 280 220, 300 200, 260 160, 240 180)))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (100 180, 100 200, 120 200, 120 180, 100 180)),
- (
- (220 140, 60 140, 60 240, 220 240, 220 220, 160 220, 160 200, 200 200, 200 180,
- 160 180, 160 160, 220 160, 220 140),
- (80 220, 80 160, 140 160, 140 220, 80 220)),
- (
- (240 180, 280 220, 300 200, 260 160, 240 180)))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140),
- (200 200, 200 180, 220 180, 220 200, 200 200),
- (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)),
- (
- (240 180, 280 220, 300 200, 260 160, 240 180)))
- </op>
-</test>
-</case>
-
-<case>
- <desc>AA - hole intersecting boundary to produce line</desc>
- <a>
- POLYGON(
- (60 160, 140 160, 140 60, 60 60, 60 160))
- </a>
- <b>
- POLYGON(
- (160 160, 100 160, 100 100, 160 100, 160 160),
- (140 140, 120 140, 120 120, 140 120, 140 140))
- </b>
-<test>
- <op name="getboundary" arg1="A">
- LINESTRING(
- 60 160, 140 160, 140 60, 60 60, 60 160)
- </op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POLYGON(
- (60 60, 60 160, 140 160, 140 60, 60 60))
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(140 140, 140 120),
- POLYGON(
- (100 160, 140 160, 140 140, 120 140, 120 120, 140 120, 140 100, 100 100, 100 160)))
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- POLYGON(
- (60 160, 100 160, 140 160, 160 160, 160 100, 140 100, 140 60, 60 60, 60 160))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)),
- (
- (140 140, 140 120, 120 120, 120 140, 140 140)))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)),
- (
- (140 140, 140 160, 160 160, 160 100, 140 100, 140 120, 120 120, 120 140, 140 140)))
- </op>
-</test>
-</case>
-
-
-<case>
- <desc>LA - A and B simple</desc>
- <a>
- LINESTRING(240 190, 120 120)
- </a>
- <b>
- POLYGON(
- (110 240, 50 80, 240 70, 110 240))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- LINESTRING(177 153, 120 120)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(240 190, 177 153),
- POLYGON(
- (177 153, 240 70, 50 80, 110 240, 177 153)))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- LINESTRING(240 190, 177 153)
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(240 190, 177 153),
- POLYGON(
- (177 153, 240 70, 50 80, 110 240, 177 153)))
- </op>
-</test>
-</case>
-
-<case>
- <desc>LA - A intersects B-hole</desc>
- <a>
- LINESTRING(0 100, 100 100, 200 200)
- </a>
- <b>
- POLYGON(
- (30 240, 260 30, 30 30, 30 240),
- (80 140, 80 80, 140 80, 80 140))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTILINESTRING(
- (30 100, 80 100),
- (110 110, 140 140))
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(0 100, 30 100),
- LINESTRING(80 100, 100 100, 110 110),
- LINESTRING(140 140, 200 200),
- POLYGON(
- (30 240, 140 140, 260 30, 30 30, 30 100, 30 240),
- (80 140, 80 100, 80 80, 140 80, 110 110, 80 140)))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTILINESTRING(
- (0 100, 30 100),
- (80 100, 100 100, 110 110),
- (140 140, 200 200))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(0 100, 30 100),
- LINESTRING(80 100, 100 100, 110 110),
- LINESTRING(140 140, 200 200),
- POLYGON(
- (30 240, 140 140, 260 30, 30 30, 30 100, 30 240),
- (80 140, 80 100, 80 80, 140 80, 110 110, 80 140)))
- </op>
-</test>
-</case>
-
-<case>
- <desc>LA - A intersects B-hole #2</desc>
- <a>
- LINESTRING(40 340, 200 250, 120 180, 160 110, 270 40)
- </a>
- <b>
- POLYGON(
- (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330),
- (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTILINESTRING(
- (114 298, 200 250, 173 226),
- (182 96, 225 68))
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(40 340, 114 298),
- LINESTRING(173 226, 120 180, 160 110, 182 96),
- LINESTRING(225 68, 270 40),
- POLYGON(
- (114 298, 160 330, 260 250, 270 130, 225 68, 190 20, 60 40, 20 150, 60 260,
- 114 298),
- (140 240, 80 190, 90 100, 160 70, 182 96, 210 130, 210 210, 173 226, 140 240)))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTILINESTRING(
- (40 340, 114 298),
- (173 226, 120 180, 160 110, 182 96),
- (225 68, 270 40))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(40 340, 114 298),
- LINESTRING(173 226, 120 180, 160 110, 182 96),
- LINESTRING(225 68, 270 40),
- POLYGON(
- (114 298, 160 330, 260 250, 270 130, 225 68, 190 20, 60 40, 20 150, 60 260,
- 114 298),
- (140 240, 80 190, 90 100, 160 70, 182 96, 210 130, 210 210, 173 226, 140 240)))
- </op>
-</test>
-</case>
-
-<case>
- <desc>mLmA - A and B complex, disjoint</desc>
- <a>
- MULTIPOLYGON(
- (
- (60 320, 60 80, 300 80, 60 320),
- (80 280, 80 100, 260 100, 80 280)),
- (
- (120 160, 140 160, 140 140, 120 160)))
- </a>
- <b>
- MULTILINESTRING(
- (100 240, 100 180, 160 180, 160 120, 220 120),
- (40 360, 40 60, 340 60, 40 360, 40 20),
- (120 120, 120 140, 100 140, 100 120, 140 120))
- </b>
-<test>
- <op name="convexhull" pattern="FFFFFFFFF" arg1="A">
- POLYGON(
- (60 80, 60 320, 300 80, 60 80))
- </op>
-</test>
-<test>
- <op name="getboundary" pattern="FFFFFFFFF" arg1="A">
- MULTILINESTRING(
- (60 320, 60 80, 300 80, 60 320),
- (80 280, 80 100, 260 100, 80 280),
- (120 160, 140 160, 140 140, 120 160))
- </op>
-</test>
-<test>
- <op name="symdifference" pattern="FFFFFFFFF" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(100 240, 100 180, 160 180, 160 120, 220 120),
- LINESTRING(40 360, 40 60),
- LINESTRING(40 60, 340 60, 40 360),
- LINESTRING(40 60, 40 20),
- LINESTRING(120 120, 120 140, 100 140, 100 120, 120 120),
- LINESTRING(120 120, 140 120),
- POLYGON(
- (60 320, 300 80, 60 80, 60 320),
- (80 280, 80 100, 260 100, 80 280)),
- POLYGON(
- (120 160, 140 160, 140 140, 120 160)))
- </op>
-</test>
-<test>
- <op name="difference" pattern="FFFFFFFFF" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (60 320, 300 80, 60 80, 60 320),
- (80 280, 80 100, 260 100, 80 280)),
- (
- (120 160, 140 160, 140 140, 120 160)))
- </op>
-</test>
-<test>
- <op name="union" pattern="FFFFFFFFF" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(100 240, 100 180, 160 180, 160 120, 220 120),
- LINESTRING(40 360, 40 60),
- LINESTRING(40 60, 340 60, 40 360),
- LINESTRING(40 60, 40 20),
- LINESTRING(120 120, 120 140, 100 140, 100 120, 120 120),
- LINESTRING(120 120, 140 120),
- POLYGON(
- (60 320, 300 80, 60 80, 60 320),
- (80 280, 80 100, 260 100, 80 280)),
- POLYGON(
- (120 160, 140 160, 140 140, 120 160)))
- </op>
-</test>
-<test>
- <op name="intersection" pattern="FFFFFFFFF" arg1="A" arg2="B">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-</case>
-
-<case>
- <desc>mLmA - A and B complex, overlapping and touching #1</desc>
- <a>
- MULTIPOLYGON(
- (
- (60 260, 60 120, 220 120, 220 260, 60 260),
- (80 240, 80 140, 200 140, 200 240, 80 240)),
- (
- (100 220, 100 160, 180 160, 180 220, 100 220),
- (120 200, 120 180, 160 180, 160 200, 120 200)))
- </a>
- <b>
- MULTILINESTRING(
- (40 260, 240 260, 240 240, 40 240, 40 220, 240 220),
- (120 300, 120 80, 140 80, 140 300, 140 80, 120 80, 120 320))
- </b>
- <test>
- <op name="getboundary" arg1="A">
- MULTILINESTRING(
- (60 260, 60 120, 220 120, 220 260, 60 260),
- (80 240, 80 140, 200 140, 200 240, 80 240),
- (100 220, 100 160, 180 160, 180 220, 100 220),
- (120 200, 120 180, 160 180, 160 200, 120 200))
- </op>
- </test>
- <test>
- <op name="convexhull" arg1="A">
- POLYGON(
- (60 120, 60 260, 220 260, 220 120, 60 120))
- </op>
- </test>
- <test>
- <op name="intersection" arg1="A" arg2="B">
- MULTILINESTRING(
- (220 260, 140 260),
- (140 260, 120 260),
- (120 260, 60 260),
- (200 240, 140 240),
- (140 240, 120 240),
- (120 240, 80 240),
- (180 220, 140 220),
- (140 220, 120 220),
- (120 220, 100 220),
- (120 200, 120 180),
- (220 240, 200 240),
- (80 240, 60 240),
- (60 220, 80 220),
- (200 220, 220 220),
- (120 260, 120 240),
- (120 220, 120 200),
- (120 180, 120 160),
- (120 140, 120 120),
- (140 120, 140 140),
- (140 160, 140 180),
- (140 200, 140 220),
- (140 240, 140 260))
- </op>
- </test>
- <test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(40 260, 60 260),
- LINESTRING(220 260, 240 260, 240 240, 220 240),
- LINESTRING(60 240, 40 240, 40 220, 60 220),
- LINESTRING(80 220, 100 220),
- LINESTRING(180 220, 200 220),
- LINESTRING(220 220, 240 220),
- LINESTRING(120 300, 120 260),
- LINESTRING(120 240, 120 220),
- LINESTRING(120 160, 120 140),
- LINESTRING(120 120, 120 80),
- LINESTRING(120 80, 140 80),
- LINESTRING(140 80, 140 120),
- LINESTRING(140 140, 140 160),
- LINESTRING(140 180, 140 200),
- LINESTRING(140 220, 140 240),
- LINESTRING(140 260, 140 300),
- LINESTRING(120 300, 120 320),
- POLYGON(
- (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120,
- 120 120, 60 120, 60 220, 60 240),
- (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240,
- 120 240, 80 240)),
- POLYGON(
- (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160),
- (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200)))
- </op>
- </test>
- <test>
- <op name="difference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120,
- 120 120, 60 120, 60 220, 60 240),
- (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240,
- 120 240, 80 240)),
- (
- (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160),
- (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200)))
- </op>
- </test>
- <test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(40 260, 60 260),
- LINESTRING(220 260, 240 260, 240 240, 220 240),
- LINESTRING(60 240, 40 240, 40 220, 60 220),
- LINESTRING(80 220, 100 220),
- LINESTRING(180 220, 200 220),
- LINESTRING(220 220, 240 220),
- LINESTRING(120 300, 120 260),
- LINESTRING(120 240, 120 220),
- LINESTRING(120 160, 120 140),
- LINESTRING(120 120, 120 80),
- LINESTRING(120 80, 140 80),
- LINESTRING(140 80, 140 120),
- LINESTRING(140 140, 140 160),
- LINESTRING(140 180, 140 200),
- LINESTRING(140 220, 140 240),
- LINESTRING(140 260, 140 300),
- LINESTRING(120 300, 120 320),
- POLYGON(
- (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120,
- 120 120, 60 120, 60 220, 60 240),
- (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240,
- 120 240, 80 240)),
- POLYGON(
- (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160),
- (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200)))
- </op>
- </test>
-</case><case>
- <desc>mLmA - A and B complex, overlapping and touching #2</desc>
- <a>
- MULTIPOLYGON(
- (
- (60 320, 60 120, 280 120, 280 320, 60 320),
- (120 260, 120 180, 240 180, 240 260, 120 260)),
- (
- (280 400, 320 400, 320 360, 280 360, 280 400)),
- (
- (300 240, 300 220, 320 220, 320 240, 300 240)))
- </a>
- <b>
- MULTILINESTRING(
- (80 300, 80 160, 260 160, 260 300, 80 300, 80 140),
- (220 360, 220 240, 300 240, 300 360))
- </b>
-<test>
- <op name="convexhull" pattern="FFFFFFFFF" arg1="A">
- POLYGON(
- (60 120, 60 320, 280 400, 320 400, 320 220, 280 120, 60 120))
- </op>
-</test>
-<test>
- <op name="getboundary" pattern="FFFFFFFFF" arg1="A">
- MULTILINESTRING(
- (60 320, 60 120, 280 120, 280 320, 60 320),
- (120 260, 120 180, 240 180, 240 260, 120 260),
- (280 400, 320 400, 320 360, 280 360, 280 400),
- (300 240, 300 220, 320 220, 320 240, 300 240))
- </op>
-</test>
-<test>
- <op name="symdifference" pattern="FFFFFFFFF" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(220 360, 220 320),
- LINESTRING(220 260, 220 240, 240 240),
- LINESTRING(280 240, 300 240),
- LINESTRING(300 240, 300 360),
- POLYGON(
- (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240),
- (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)),
- POLYGON(
- (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)),
- POLYGON(
- (300 240, 320 240, 320 220, 300 220, 300 240)))
- </op>
-</test>
-<test>
- <op name="difference" pattern="FFFFFFFFF" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240),
- (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)),
- (
- (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)),
- (
- (300 240, 320 240, 320 220, 300 220, 300 240)))
- </op>
-</test>
-<test>
- <op name="union" pattern="FFFFFFFFF" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(220 360, 220 320),
- LINESTRING(220 260, 220 240, 240 240),
- LINESTRING(280 240, 300 240),
- LINESTRING(300 240, 300 360),
- POLYGON(
- (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240),
- (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)),
- POLYGON(
- (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)),
- POLYGON(
- (300 240, 320 240, 320 220, 300 220, 300 240)))
- </op>
-</test>
-<test>
- <op name="intersection" pattern="FFFFFFFFF" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(300 240),
- POINT(300 360),
- LINESTRING(80 300, 80 160),
- LINESTRING(80 160, 260 160, 260 240),
- LINESTRING(260 240, 260 300, 220 300),
- LINESTRING(220 300, 80 300),
- LINESTRING(80 160, 80 140),
- LINESTRING(220 320, 220 300),
- LINESTRING(220 300, 220 260),
- LINESTRING(240 240, 260 240),
- LINESTRING(260 240, 280 240))
- </op>
-</test>
-</case>
-
-<case>
- <desc>mLmA - A and B complex, overlapping and touching #3</desc>
- <a>
- MULTIPOLYGON(
- (
- (120 180, 60 80, 180 80, 120 180)),
- (
- (100 240, 140 240, 120 220, 100 240)))
- </a>
- <b>
- MULTILINESTRING(
- (180 260, 120 180, 60 260, 180 260),
- (60 300, 60 40),
- (100 100, 140 100))
- </b>
-<test>
- <op name="convexhull" pattern="FFFFFFFFF" arg1="A">
- POLYGON(
- (60 80, 100 240, 140 240, 180 80, 60 80))
- </op>
-</test>
-<test>
- <op name="getboundary" pattern="FFFFFFFFF" arg1="A">
- MULTILINESTRING(
- (120 180, 60 80, 180 80, 120 180),
- (100 240, 140 240, 120 220, 100 240))
- </op>
-</test>
-<test>
- <op name="symdifference" pattern="FFFFFFFFF" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(180 260, 120 180),
- LINESTRING(120 180, 60 260),
- LINESTRING(60 260, 180 260),
- LINESTRING(60 300, 60 260),
- LINESTRING(60 260, 60 80),
- LINESTRING(60 80, 60 40),
- POLYGON(
- (60 80, 120 180, 180 80, 60 80)),
- POLYGON(
- (100 240, 140 240, 120 220, 100 240)))
- </op>
-</test>
-<test>
- <op name="difference" pattern="FFFFFFFFF" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (60 80, 120 180, 180 80, 60 80)),
- (
- (100 240, 140 240, 120 220, 100 240)))
- </op>
-</test>
-<test>
- <op name="union" pattern="FFFFFFFFF" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- LINESTRING(180 260, 120 180),
- LINESTRING(120 180, 60 260),
- LINESTRING(60 260, 180 260),
- LINESTRING(60 300, 60 260),
- LINESTRING(60 260, 60 80),
- LINESTRING(60 80, 60 40),
- POLYGON(
- (60 80, 120 180, 180 80, 60 80)),
- POLYGON(
- (100 240, 140 240, 120 220, 100 240)))
- </op>
-</test>
-<test>
- <op name="intersection" pattern="FFFFFFFFF" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(60 80),
- POINT(120 180),
- LINESTRING(100 100, 140 100))
- </op>
-</test>
-</case>
-
-<case>
- <desc>PA - point contained in simple polygon</desc>
- <a>
- POINT(100 100)
- </a>
- <b>
- POLYGON(
- (50 50, 200 50, 200 200, 50 200, 50 50))
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- POINT(100 100)
- </op>
-</test>
-</case>
-
-<case>
- <desc>mPmA - points on I, B and E of touching triangles</desc>
- <a>
- MULTIPOLYGON(
- (
- (120 320, 180 200, 240 320, 120 320)),
- (
- (180 200, 240 80, 300 200, 180 200)))
- </a>
- <b>
- MULTIPOINT(120 320, 180 260, 180 320, 180 200, 300 200, 200 220)
- </b>
-<test>
- <op name="getboundary" arg1="A">
- MULTILINESTRING(
- (120 320, 180 200, 240 320, 120 320),
- (180 200, 240 80, 300 200, 180 200))
- </op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POLYGON(
- (240 80, 120 320, 240 320, 300 200, 240 80))
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTIPOINT(120 320, 180 200, 180 260, 180 320, 300 200)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(200 220),
- POLYGON(
- (180 200, 120 320, 240 320, 180 200)),
- POLYGON(
- (180 200, 300 200, 240 80, 180 200)))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (180 200, 120 320, 240 320, 180 200)),
- (
- (180 200, 300 200, 240 80, 180 200)))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(200 220),
- POLYGON(
- (180 200, 120 320, 240 320, 180 200)),
- POLYGON(
- (180 200, 300 200, 240 80, 180 200)))
- </op>
-</test>
-</case>
-
-<case>
- <desc>mPmA - points on I, B and E of concentric doughnuts</desc>
- <a>
- MULTIPOLYGON(
- (
- (120 80, 420 80, 420 340, 120 340, 120 80),
- (160 300, 160 120, 380 120, 380 300, 160 300)),
- (
- (200 260, 200 160, 340 160, 340 260, 200 260),
- (240 220, 240 200, 300 200, 300 220, 240 220)))
- </a>
- <b>
- MULTIPOINT(200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200, 200 360,
- 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200)
- </b>
-<test>
- <op name="getboundary" arg1="A">
- MULTILINESTRING(
- (120 80, 420 80, 420 340, 120 340, 120 80),
- (160 300, 160 120, 380 120, 380 300, 160 300),
- (200 260, 200 160, 340 160, 340 260, 200 260),
- (240 220, 240 200, 300 200, 300 220, 240 220))
- </op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POLYGON(
- (120 80, 120 340, 420 340, 420 80, 120 80))
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTIPOINT(200 160, 220 180, 260 200, 340 120, 400 100, 420 340)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(200 140),
- POINT(200 360),
- POLYGON(
- (120 80, 120 340, 420 340, 420 80, 120 80),
- (160 300, 160 120, 380 120, 380 300, 160 300)),
- POLYGON(
- (200 260, 340 260, 340 160, 200 160, 200 260),
- (240 220, 240 200, 300 200, 300 220, 240 220)))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTIPOLYGON(
- (
- (120 80, 120 340, 420 340, 420 80, 120 80),
- (160 300, 160 120, 380 120, 380 300, 160 300)),
- (
- (200 260, 340 260, 340 160, 200 160, 200 260),
- (240 220, 240 200, 300 200, 300 220, 240 220)))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(200 140),
- POINT(200 360),
- POLYGON(
- (120 80, 120 340, 420 340, 420 80, 120 80),
- (160 300, 160 120, 380 120, 380 300, 160 300)),
- POLYGON(
- (200 260, 340 260, 340 160, 200 160, 200 260),
- (240 220, 240 200, 300 200, 300 220, 240 220)))
- </op>
-</test>
-</case>
-
-
-<case>
- <desc>mPL - points in I and E of line</desc>
- <a>
- MULTIPOINT(40 90, 20 20, 70 70)
- </a>
- <b>
- LINESTRING(20 20, 100 100)
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTIPOINT(20 20, 70 70)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(40 90),
- LINESTRING(20 20, 100 100))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POINT(40 90)
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(40 90),
- LINESTRING(20 20, 100 100))
- </op>
-</test>
-</case>
-
-<case>
- <desc>mPL - points in I and E of line, line self-intersecting</desc>
- <a>
- MULTIPOINT(40 90, 20 20, 70 70)
- </a>
- <b>
- LINESTRING(20 20, 110 110, 170 50, 130 10, 70 70)
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTIPOINT(20 20, 70 70)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(40 90),
- LINESTRING(20 20, 70 70),
- LINESTRING(70 70, 110 110, 170 50, 130 10, 70 70))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POINT(40 90)
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(40 90),
- LINESTRING(20 20, 70 70),
- LINESTRING(70 70, 110 110, 170 50, 130 10, 70 70))
- </op>
-</test>
-</case>
-
-<case>
- <desc>mPmL - points in I, B and E of lines, lines overlap, points overlap</desc>
- <a>
- MULTILINESTRING(
- (100 320, 100 220),
- (100 180, 200 180),
- (220 180, 220 320),
- (220 320, 160 320),
- (100 320, 100 220),
- (100 180, 200 180),
- (220 180, 220 320),
- (220 320, 160 320),
- (100 220, 100 320))
- </a>
- <b>
- MULTIPOINT(100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260,
- 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180,
- 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320)
- </b>
-<test>
- <op name="getboundary" arg1="A">
- MULTIPOINT(100 220, 100 320)
- </op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POLYGON(
- (100 180, 100 320, 220 320, 220 180, 100 180))
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTIPOINT(100 180, 100 220, 100 260, 100 320, 120 180, 160 320, 200 180, 200 320, 220 180,
- 220 260, 220 320)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(100 200),
- POINT(120 320),
- POINT(140 320),
- LINESTRING(100 320, 100 220),
- LINESTRING(100 180, 200 180),
- LINESTRING(220 180, 220 320),
- LINESTRING(220 320, 160 320))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTILINESTRING(
- (100 320, 100 220),
- (100 180, 200 180),
- (220 180, 220 320),
- (220 320, 160 320))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(100 200),
- POINT(120 320),
- POINT(140 320),
- LINESTRING(100 320, 100 220),
- LINESTRING(100 180, 200 180),
- LINESTRING(220 180, 220 320),
- LINESTRING(220 320, 160 320))
- </op>
-</test>
-</case>
-
-<case>
- <desc>mPmL - points in I, B and E of lines, lines overlap, points overlap, x <0, y < 0</desc>
- <a>
- MULTILINESTRING(
- (-500 -140, -500 -280, -320 -280, -320 -140, -500 -140, -500 -340),
- (-500 -140, -320 -140, -500 -140, -320 -140, -500 -140))
- </a>
- <b>
- MULTIPOINT(-560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180,
- -280 -140, -320 -120, -560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140,
- -320 -180, -280 -140, -320 -120)
- </b>
-<test>
- <op name="getboundary" arg1="A">
- MULTIPOINT(-500 -340, -500 -140)
- </op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POLYGON(
- (-500 -340, -500 -140, -320 -140, -320 -280, -500 -340))
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTIPOINT(-500 -340, -500 -280, -500 -220, -500 -140, -420 -140, -320 -180, -320 -140)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(-560 -180),
- POINT(-420 -180),
- POINT(-320 -120),
- POINT(-280 -140),
- LINESTRING(-500 -140, -500 -280),
- LINESTRING(-500 -280, -320 -280, -320 -140),
- LINESTRING(-320 -140, -500 -140),
- LINESTRING(-500 -280, -500 -340))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTILINESTRING(
- (-500 -140, -500 -280),
- (-500 -280, -320 -280, -320 -140),
- (-320 -140, -500 -140),
- (-500 -280, -500 -340))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(-560 -180),
- POINT(-420 -180),
- POINT(-320 -120),
- POINT(-280 -140),
- LINESTRING(-500 -140, -500 -280),
- LINESTRING(-500 -280, -320 -280, -320 -140),
- LINESTRING(-320 -140, -500 -140),
- LINESTRING(-500 -280, -500 -340))
- </op>
-</test>
-</case>
-
-<case>
- <desc>mL - lines intersect at 1 point</desc>
- <a>
- MULTILINESTRING(
- (180 100, 140 280, 240 140, 220 120, 140 280),
- (140 280, 100 400, 80 380, 140 280, 40 380, 20 360, 140 280))
- </a>
-<test>
- <op name="getboundary" arg1="A">
- MULTIPOINT(180 100, 140 280)
- </op>
-</test>
-</case>
-
-<case>
- <desc>mPmL - points in I, B and E of lines, lines overlap, points overlap</desc>
- <a>
- MULTILINESTRING(
- (100 320, 100 220),
- (100 180, 200 180),
- (220 180, 220 320),
- (220 320, 160 320),
- (100 320, 100 220),
- (100 180, 200 180),
- (220 180, 220 320),
- (220 320, 160 320),
- (100 220, 100 320))
- </a>
- <b>
- MULTIPOINT(100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260,
- 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180,
- 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320)
- </b>
-<test>
- <op name="getboundary" arg1="A">
- MULTIPOINT(100 220, 100 320)
- </op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POLYGON(
- (100 180, 100 320, 220 320, 220 180, 100 180))
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTIPOINT(100 180, 100 220, 100 260, 100 320, 120 180, 160 320, 200 180, 200 320, 220 180,
- 220 260, 220 320)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(100 200),
- POINT(120 320),
- POINT(140 320),
- LINESTRING(100 320, 100 220),
- LINESTRING(100 180, 200 180),
- LINESTRING(220 180, 220 320),
- LINESTRING(220 320, 160 320))
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTILINESTRING(
- (100 320, 100 220),
- (100 180, 200 180),
- (220 180, 220 320),
- (220 320, 160 320))
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION(
- POINT(100 200),
- POINT(120 320),
- POINT(140 320),
- LINESTRING(100 320, 100 220),
- LINESTRING(100 180, 200 180),
- LINESTRING(220 180, 220 320),
- LINESTRING(220 320, 160 320))
- </op>
-</test>
-</case>
-
-
-<case>
- <desc>PP - point contained in both A and B</desc>
- <a>
- POINT(100 100)
- </a>
- <b>
- POINT(100 100)
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- POINT(100 100)
- </op>
-</test>
-</case>
-
-<case>
- <desc>PP - A different from B</desc>
- <a>
- POINT(100 100)
- </a>
- <b>
- POINT(200 200)
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- MULTIPOINT(100 100, 200 200)
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POINT(100 100)
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOINT(100 100, 200 200)
- </op>
-</test>
-</case>
-
-<case>
- <desc>PmP - point in A contained in B</desc>
- <a>
- POINT(100 100)
- </a>
- <b>
- MULTIPOINT(100 100, 200 200)
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- POINT(100 100)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- MULTIPOINT(100 100, 200 200)
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- POINT(200 200)
- </op>
-</test>
-</case>
-
-<case>
- <desc>mPmP - points in A only, B only, and in both</desc>
- <a>
- MULTIPOINT(100 100, 200 200, 300 300, 500 500)
- </a>
- <b>
- MULTIPOINT(100 100, 200 200, 400 400, 600 600)
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- MULTIPOINT(100 100, 200 200)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- MULTIPOINT(100 100, 200 200, 300 300, 400 400, 500 500, 600 600)
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- MULTIPOINT(300 300, 500 500)
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOINT(300 300, 400 400, 500 500, 600 600)
- </op>
-</test>
-</case>
-
-<case>
- <desc>PP - point contained in both A and B</desc>
- <a>
- POINT(80 200)
- </a>
- <b>
- POINT(80 200)
- </b>
-<test>
- <op name="getboundary" arg1="A">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POINT(80 200)
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- POINT(80 200)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- POINT(80 200)
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-</case>
-
-<case>
- <desc>PP - A different from B</desc>
- <a>
- POINT(80 200)
- </a>
- <b>
- POINT(260 80)
- </b>
-<test>
- <op name="getboundary" arg1="A">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POINT(80 200)
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- MULTIPOINT(80 200, 260 80)
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POINT(80 200)
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOINT(80 200, 260 80)
- </op>
-</test>
-</case>
-
-<case>
- <desc>PP - A different from B, same y</desc>
- <a>
- POINT(60 260)
- </a>
- <b>
- POINT(120 260)
- </b>
-<test>
- <op name="getboundary" arg1="A">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POINT(60 260)
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- MULTIPOINT(60 260, 120 260)
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POINT(60 260)
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOINT(60 260, 120 260)
- </op>
-</test>
-</case>
-
-<case>
- <desc>PP - A different from B, same x</desc>
- <a>
- POINT(80 80)
- </a>
- <b>
- POINT(80 280)
- </b>
-<test>
- <op name="getboundary" arg1="A">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-<test>
- <op name="convexhull" arg1="A">
- POINT(80 80)
- </op>
-</test>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- GEOMETRYCOLLECTION EMPTY</op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- MULTIPOINT(80 80, 80 280)
- </op>
-</test>
-<test>
- <op name="difference" arg1="A" arg2="B">
- POINT(80 80)
- </op>
-</test>
-<test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTIPOINT(80 80, 80 280)
- </op>
-</test>
-</case>
-
-<case>
- <desc>LL - narrow V</desc>
- <a>
- LINESTRING(0 10, 620 10, 0 11)
- </a>
- <b>
- LINESTRING(400 60, 400 10)
- </b>
-<test>
- <op name="intersection" arg1="A" arg2="B">
- POINT(400 10)
- </op>
-</test>
-<test>
- <op name="union" arg1="A" arg2="B">
- MULTILINESTRING(
- (0 10, 400 10),
- (400 10, 620 10, 400 10),
- (400 10, 0 11),
- (400 60, 400 10))
- </op>
-</test>
-</case>
-
-<case>
<desc>A/A-1-1: same polygons [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}]</desc>
<a>
POLYGON(
@@ -8768,32 +6931,6 @@
<case>
-<desc>P/P: same point [dim(0){A.P.Int = B.P.Int}]</desc>
- <a>
- POINT(20 20)
- </a>
- <b>
- POINT(20 20)
- </b>
- <test>
- <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
- </test>
-</case>
-
-<case>
-<desc>P/P: different point [dim(0){A.P.Int = B.P.Ext}]</desc>
- <a>
- POINT(20 20)
- </a>
- <b>
- POINT(40 60)
- </b>
- <test>
- <op name="relate" arg1="A" arg2="B" arg3="FF0FFF0F2">true</op>
- </test>
-</case>
-
-<case>
<desc>P/mP: different points [dim(0){A.P.Int = B.3P.Ext}]</desc>
<a>
POINT(40 40)
@@ -8820,19 +6957,6 @@
</case>
<case>
-<desc>mP/mP-1-1: same points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P2.Int = B.3P2.Int}, dim(0){A.3P3.Int = B.3P3.Int}]</desc>
- <a>
- MULTIPOINT(40 40, 80 60, 120 100)
- </a>
- <b>
- MULTIPOINT(40 40, 80 60, 120 100)
- </b>
- <test>
- <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
- </test>
-</case>
-
-<case>
<desc>mP/mP-1-2: same but different sequence of points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P1.Int = B.3P3.Int}, dim(0){A.3P3.Int = B.3P2.Int}]</desc>
<a>
MULTIPOINT(40 40, 80 60, 120 100)
More information about the geos-commits
mailing list