[geos-commits] [SCM] GEOS branch main updated. 7ad626072343e4a55096936015101a19e2492ecd
git at osgeo.org
git at osgeo.org
Wed Jul 15 07:09:26 PDT 2026
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GEOS".
The branch, main has been updated
via 7ad626072343e4a55096936015101a19e2492ecd (commit)
from 2a5ce498a499916cf9b8e3c830b3e644d03f2c9f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 7ad626072343e4a55096936015101a19e2492ecd
Author: Daniel Baston <dbaston at gmail.com>
Date: Wed Jul 15 09:27:50 2026 -0400
Add XML overlay tests for curved geometries
diff --git a/tests/xmltester/tests/general/TestOverlayCurvesAA.xml b/tests/xmltester/tests/general/TestOverlayCurvesAA.xml
index d47e974cb..d53c49484 100644
--- a/tests/xmltester/tests/general/TestOverlayCurvesAA.xml
+++ b/tests/xmltester/tests/general/TestOverlayCurvesAA.xml
@@ -1,123 +1,365 @@
<run>
- <case>
- <desc>AA - simple polygons</desc>
- <a>
- CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING (10 100, 100 10, 100 60), (100 60, 10 100)))
- </a>
- <b>
- CURVEPOLYGON(COMPOUNDCURVE((50 50, 200 50, 200 200, 50 200), CIRCULARSTRING (50 200, -9 100, 50 50)))
- </b>
- <test>
- <op name="intersection" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-5.521402634079415 91.63934964816265, 1.9736670312808187 96.31281538666524, 10 100), (10 100, 100 60), CIRCULARSTRING (100 60, 101.69137093859678 55.056446403350975, 103.00735254367723 50), (103.00735254367723 50, 50 50), CIRCULARSTRING (50 50, 17.21604286900091 64.12172658671918, -5.521402634079415 91.63934964816265)))
- </op>
- </test>
- <test>
- <op name="union" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-5.521402634079415 91.63934964816265, -4.851528401625146 159.70036595476157, 50 200), (50 200, 200 200, 200 50, 103.00735254367723 50), CIRCULARSTRING (103.00735254367723 50, 10.05349282186549 -30.02054890272217, -5.521402634079415 91.63934964816265)))
- </op>
- </test>
- <test>
- <op name="difference" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-5.521402634079415 91.63934964816265, 17.21604286900091 64.12172658671918, 50 50), (50 50, 103.00735254367723 50), CIRCULARSTRING (103.00735254367723 50, 10.05349282186549 -30.02054890272217, -5.521402634079415 91.63934964816265)))
- </op>
- </test>
- <test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-5.521402634079415 91.63934964816265, 17.21604286900091 64.12172658671918, 50 50), (50 50, 103.00735254367723 50), CIRCULARSTRING (103.00735254367723 50, 10.05349282186549 -30.02054890272217, -5.521402634079415 91.63934964816265))), CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-5.521402634079415 91.63934964816265, -4.851528401625146 159.70036595476157, 50 200), (50 200, 200 200, 200 50, 103.00735254367723 50), CIRCULARSTRING (103.00735254367723 50, 101.69137093859678 55.056446403350975, 100 60), (100 60, 10 100), CIRCULARSTRING (10 100, 1.9736670312808187 96.31281538666524, -5.521402634079415 91.63934964816265))))
- </op>
- </test>
- </case>
+ <case>
+ <desc>AA - simple polygons</desc>
+ <a>
+ CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING (10 100, 100 10, 100 60), (100 60, 10 100)))
+ </a>
+ <b>
+ CURVEPOLYGON(COMPOUNDCURVE((50 50, 200 50, 200 200, 50 200), CIRCULARSTRING (50 200, -9 100, 50 50)))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-5.521402634079415 91.63934964816265, 1.9736670312808187 96.31281538666524, 10 100), (10 100, 100 60), CIRCULARSTRING (100 60, 101.69137093859678 55.056446403350975, 103.00735254367723 50), (103.00735254367723 50, 50 50), CIRCULARSTRING (50 50, 17.21604286900091 64.12172658671918, -5.521402634079415 91.63934964816265)))
+ </op>
+ </test>
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-5.521402634079415 91.63934964816265, -4.851528401625146 159.70036595476157, 50 200), (50 200, 200 200, 200 50, 103.00735254367723 50), CIRCULARSTRING (103.00735254367723 50, 10.05349282186549 -30.02054890272217, -5.521402634079415 91.63934964816265)))
+ </op>
+ </test>
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-5.521402634079415 91.63934964816265, 17.21604286900091 64.12172658671918, 50 50), (50 50, 103.00735254367723 50), CIRCULARSTRING (103.00735254367723 50, 10.05349282186549 -30.02054890272217, -5.521402634079415 91.63934964816265)))
+ </op>
+ </test>
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-5.521402634079415 91.63934964816265, 17.21604286900091 64.12172658671918, 50 50), (50 50, 103.00735254367723 50), CIRCULARSTRING (103.00735254367723 50, 10.05349282186549 -30.02054890272217, -5.521402634079415 91.63934964816265))), CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-5.521402634079415 91.63934964816265, -4.851528401625146 159.70036595476157, 50 200), (50 200, 200 200, 200 50, 103.00735254367723 50), CIRCULARSTRING (103.00735254367723 50, 101.69137093859678 55.056446403350975, 100 60), (100 60, 10 100), CIRCULARSTRING (10 100, 1.9736670312808187 96.31281538666524, -5.521402634079415 91.63934964816265))))
+ </op>
+ </test>
+ </case>
- <case>
- <desc>AA - A with hole intersecting B</desc>
- <a>
- CURVEPOLYGON((20 20, 20 160, 160 160, 160 20, 20 20), COMPOUNDCURVE ( CIRCULARSTRING (140 40, 115 115, 40 140), (40 140, 40 40, 140 40)))
- </a>
- <b>
- POLYGON((80 100, 220 100, 220 240, 80 240, 80 100))
- </b>
- <test>
- <op name="intersection" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE ((80 136.50148808205722, 80 160), (80 160, 160 160, 160 100, 127.04025757937788 100), CIRCULARSTRING (127.04025757937788 100, 106.68619012043186 122.3309157911624, 80 136.50148808205722)))
- </op>
- </test>
- <test>
- <op name="union" arg1="A" arg2="B">
- CURVEPOLYGON ((20 20, 20 160, 80 160, 80 240, 220 240, 220 100, 160 100, 160 20, 20 20), COMPOUNDCURVE ((40 40, 140 40), CIRCULARSTRING (140 40, 138.89595632376427 71.16115566898841, 127.04025757937788 100), (127.04025757937788 100, 80 100, 80 136.50148808205722), CIRCULARSTRING (80 136.50148808205722, 60.20129186630378 140.55220101502292, 40 140), (40 140, 40 40)))
- </op>
- </test>
- <test>
- <op name="difference" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE ((20 20, 20 160, 80 160, 80 136.50148808205722), CIRCULARSTRING (80 136.50148808205722, 60.20129186630378 140.55220101502292, 40 140), (40 140, 40 40, 140 40), CIRCULARSTRING (140 40, 138.89595632376427 71.16115566898841, 127.04025757937788 100), (127.04025757937788 100, 160 100, 160 20, 20 20)))
- </op>
- </test>
- <test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((20 20, 20 160, 80 160, 80 136.50148808205722), CIRCULARSTRING (80 136.50148808205722, 60.20129186630378 140.55220101502292, 40 140), (40 140, 40 40, 140 40), CIRCULARSTRING (140 40, 138.89595632376427 71.16115566898841, 127.04025757937788 100), (127.04025757937788 100, 160 100, 160 20, 20 20))), CURVEPOLYGON (COMPOUNDCURVE ((80 100, 80 136.50148808205722), CIRCULARSTRING (80 136.50148808205722, 106.68619012043186 122.3309157911624, 127.04025757937788 100), (127.04025757937788 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>
- CURVEPOLYGON (COMPOUNDCURVE((20 340, 330 380, 50 40), CIRCULARSTRING (50 40, 70 220, 20 340)))
+ <case>
+ <desc>AA - A with hole intersecting B</desc>
+ <a>
+ CURVEPOLYGON((20 20, 20 160, 160 160, 160 20, 20 20), COMPOUNDCURVE ( CIRCULARSTRING (140 40, 115 115, 40 140), (40 140, 40 40, 140 40)))
+ </a>
+ <b>
+ POLYGON((80 100, 220 100, 220 240, 80 240, 80 100))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE ((80 136.50148808205722, 80 160), (80 160, 160 160, 160 100, 127.04025757937788 100), CIRCULARSTRING (127.04025757937788 100, 106.68619012043186 122.3309157911624, 80 136.50148808205722)))
+ </op>
+ </test>
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ CURVEPOLYGON ((20 20, 20 160, 80 160, 80 240, 220 240, 220 100, 160 100, 160 20, 20 20), COMPOUNDCURVE ((40 40, 140 40), CIRCULARSTRING (140 40, 138.89595632376427 71.16115566898841, 127.04025757937788 100), (127.04025757937788 100, 80 100, 80 136.50148808205722), CIRCULARSTRING (80 136.50148808205722, 60.20129186630378 140.55220101502292, 40 140), (40 140, 40 40)))
+ </op>
+ </test>
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE ((20 20, 20 160, 80 160, 80 136.50148808205722), CIRCULARSTRING (80 136.50148808205722, 60.20129186630378 140.55220101502292, 40 140), (40 140, 40 40, 140 40), CIRCULARSTRING (140 40, 138.89595632376427 71.16115566898841, 127.04025757937788 100), (127.04025757937788 100, 160 100, 160 20, 20 20)))
+ </op>
+ </test>
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((20 20, 20 160, 80 160, 80 136.50148808205722), CIRCULARSTRING (80 136.50148808205722, 60.20129186630378 140.55220101502292, 40 140), (40 140, 40 40, 140 40), CIRCULARSTRING (140 40, 138.89595632376427 71.16115566898841, 127.04025757937788 100), (127.04025757937788 100, 160 100, 160 20, 20 20))), CURVEPOLYGON (COMPOUNDCURVE ((80 100, 80 136.50148808205722), CIRCULARSTRING (80 136.50148808205722, 106.68619012043186 122.3309157911624, 127.04025757937788 100), (127.04025757937788 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>
+ CURVEPOLYGON (COMPOUNDCURVE((20 340, 330 380, 50 40), CIRCULARSTRING (50 40, 70 220, 20 340)))
- </a>
- <b>
- POLYGON(
- (210 320, 140 270, 0 270, 140 220, 210 320))
- </b>
- <test>
- <op name="intersection" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE ((56.278836074826415 270, 140 270, 210 320, 140 220, 63.6291020022965 247.27532071346553), CIRCULARSTRING (63.6291020022965 247.27532071346553, 60.17196289508064 258.70817016660806, 56.278836074826415 270)))
- </op>
- </test>
- <test>
- <op name="union" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE ((0 270, 56.278836074826415 270), CIRCULARSTRING (56.278836074826415 270, 40.36422766234557 306.1530500525802, 20 340), (20 340, 330 380, 50 40), CIRCULARSTRING (50 40, 74.61109542602588 142.46747319494153, 63.6291020022965 247.27532071346553), (63.6291020022965 247.27532071346553, 0 270)))
- </op>
- </test>
- <test>
- <op name="difference" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE ((20 340, 330 380, 50 40), CIRCULARSTRING (50 40, 74.61109542602588 142.46747319494153, 63.6291020022965 247.27532071346553), (63.6291020022965 247.27532071346553, 140 220, 210 320, 140 270, 56.278836074826415 270), CIRCULARSTRING (56.278836074826415 270, 40.36422766234557 306.1530500525802, 20 340)))
- </op>
- </test>
- <test>
- <op name="symdifference" arg1="A" arg2="B">
- MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((20 340, 330 380, 50 40), CIRCULARSTRING (50 40, 74.61109542602588 142.46747319494153, 63.6291020022965 247.27532071346553), (63.6291020022965 247.27532071346553, 140 220, 210 320, 140 270, 56.278836074826415 270), CIRCULARSTRING (56.278836074826415 270, 40.36422766234557 306.1530500525802, 20 340))), CURVEPOLYGON (COMPOUNDCURVE ((0 270, 56.278836074826415 270), CIRCULARSTRING (56.278836074826415 270, 60.17196289508064 258.70817016660806, 63.6291020022965 247.27532071346553), (63.6291020022965 247.27532071346553, 0 270))))
- </op>
- </test>
+ </a>
+ <b>
+ POLYGON(
+ (210 320, 140 270, 0 270, 140 220, 210 320))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE ((56.278836074826415 270, 140 270, 210 320, 140 220, 63.6291020022965 247.27532071346553), CIRCULARSTRING (63.6291020022965 247.27532071346553, 60.17196289508064 258.70817016660806, 56.278836074826415 270)))
+ </op>
+ </test>
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE ((0 270, 56.278836074826415 270), CIRCULARSTRING (56.278836074826415 270, 40.36422766234557 306.1530500525802, 20 340), (20 340, 330 380, 50 40), CIRCULARSTRING (50 40, 74.61109542602588 142.46747319494153, 63.6291020022965 247.27532071346553), (63.6291020022965 247.27532071346553, 0 270)))
+ </op>
+ </test>
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE ((20 340, 330 380, 50 40), CIRCULARSTRING (50 40, 74.61109542602588 142.46747319494153, 63.6291020022965 247.27532071346553), (63.6291020022965 247.27532071346553, 140 220, 210 320, 140 270, 56.278836074826415 270), CIRCULARSTRING (56.278836074826415 270, 40.36422766234557 306.1530500525802, 20 340)))
+ </op>
+ </test>
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((20 340, 330 380, 50 40), CIRCULARSTRING (50 40, 74.61109542602588 142.46747319494153, 63.6291020022965 247.27532071346553), (63.6291020022965 247.27532071346553, 140 220, 210 320, 140 270, 56.278836074826415 270), CIRCULARSTRING (56.278836074826415 270, 40.36422766234557 306.1530500525802, 20 340))), CURVEPOLYGON (COMPOUNDCURVE ((0 270, 56.278836074826415 270), CIRCULARSTRING (56.278836074826415 270, 60.17196289508064 258.70817016660806, 63.6291020022965 247.27532071346553), (63.6291020022965 247.27532071346553, 0 270))))
+ </op>
+ </test>
- </case>
- <case>
- <desc>AA - simple polygons intersecting in P, L and A</desc>
- <a>
- CURVEPOLYGON(COMPOUNDCURVE((0 0, 110 0), CIRCULARSTRING (110 0, 90 20, 110 60), (110 60, 40 60, 100 100), CIRCULARSTRING (100 100, 150 150, 100 200), (100 200, 40 220, 110 260), CIRCULARSTRING (110 260, 50 280, 0 260, -50 130, 0 0)))
- </a>
- <b>
- CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(220 0, 120 20, 110 0, 90 20, 110 60), (110 60, 180 60, 100 150, 180 220, 110 260, 220 260, 220 0)))
- </b>
- <test>
- <op name="intersection" arg1="A" arg2="B">
- GEOMETRYCOLLECTION (CURVEPOLYGON (COMPOUNDCURVE ((100 150, 137.6288347353439 182.92523039342592), CIRCULARSTRING (137.6288347353439 182.92523039342592, 149.90186898086148 146.8689503011078, 133.218191941496 112.62953406581698), (133.218191941496 112.62953406581698, 100 150))), CIRCULARSTRING (110 0, 90 20, 110 60), POINT (110 260))
- </op>
- </test>
- <test>
- <op name="union" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (0 0, -50 130, 0 260, 50 280, 110 260), (110 260, 220 260, 220 0), CIRCULARSTRING (220 0, 120 20, 110 0), (110 0, 0 0)), COMPOUNDCURVE ((40 60, 110 60, 180 60, 133.218191941496 112.62953406581698), CIRCULARSTRING (133.218191941496 112.62953406581698, 117.76902787564433 103.26391492267913, 100 100), (100 100, 40 60)), COMPOUNDCURVE ((40 220, 100 200), CIRCULARSTRING (100 200, 120.66081412152852 195.5316456965444, 137.6288347353439 182.92523039342592), (137.6288347353439 182.92523039342592, 180 220, 110 260), (110 260, 40 220)))
- </op>
- </test>
- <test>
- <op name="difference" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (0 0, -50 130, 0 260, 50 280, 110 260), (110 260, 40 220, 100 200), CIRCULARSTRING (100 200, 120.66081412152852 195.5316456965444, 137.6288347353439 182.92523039342592), (137.6288347353439 182.92523039342592, 100 150, 133.218191941496 112.62953406581698), CIRCULARSTRING (133.218191941496 112.62953406581698, 117.76902787564433 103.26391492267913, 100 100), (100 100, 40 60, 110 60), CIRCULARSTRING (110 60, 90 20, 110 0), (110 0, 0 0)))
- </op>
- </test>
- <test>
- <op name="symdifference" arg1="A" arg2="B">
- CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (0 0, -50 130, 0 260, 50 280, 110 260), (110 260, 220 260, 220 0), CIRCULARSTRING (220 0, 120 20, 110 0), (110 0, 0 0)), COMPOUNDCURVE ((40 60, 110 60, 180 60, 133.218191941496 112.62953406581698), CIRCULARSTRING (133.218191941496 112.62953406581698, 117.76902787564433 103.26391492267913, 100 100), (100 100, 40 60)), COMPOUNDCURVE ((100 150, 133.218191941496 112.62953406581698), CIRCULARSTRING (133.218191941496 112.62953406581698, 149.90186898086148 146.8689503011078, 137.6288347353439 182.92523039342592), (137.6288347353439 182.92523039342592, 100 150)), COMPOUNDCURVE ((40 220, 100 200), CIRCULARSTRING (100 200, 120.66081412152852 195.5316456965444, 137.6288347353439 182.92523039342592), (137.6288347353439 182.92523039342592, 180 220, 110 260), (110 260, 40 220)))
- </op>
- </test>
+ </case>
+ <case>
+ <desc>AA - simple polygons intersecting in P, L and A</desc>
+ <a>
+ CURVEPOLYGON(COMPOUNDCURVE((0 0, 110 0), CIRCULARSTRING (110 0, 90 20, 110 60), (110 60, 40 60, 100 100), CIRCULARSTRING (100 100, 150 150, 100 200), (100 200, 40 220, 110 260), CIRCULARSTRING (110 260, 50 280, 0 260, -50 130, 0 0)))
+ </a>
+ <b>
+ CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(220 0, 120 20, 110 0, 90 20, 110 60), (110 60, 180 60, 100 150, 180 220, 110 260, 220 260, 220 0)))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON (COMPOUNDCURVE ((100 150, 137.6288347353439 182.92523039342592), CIRCULARSTRING (137.6288347353439 182.92523039342592, 149.90186898086148 146.8689503011078, 133.218191941496 112.62953406581698), (133.218191941496 112.62953406581698, 100 150))), CIRCULARSTRING (110 0, 90 20, 110 60), POINT (110 260))
+ </op>
+ </test>
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (0 0, -50 130, 0 260, 50 280, 110 260), (110 260, 220 260, 220 0), CIRCULARSTRING (220 0, 120 20, 110 0), (110 0, 0 0)), COMPOUNDCURVE ((40 60, 110 60, 180 60, 133.218191941496 112.62953406581698), CIRCULARSTRING (133.218191941496 112.62953406581698, 117.76902787564433 103.26391492267913, 100 100), (100 100, 40 60)), COMPOUNDCURVE ((40 220, 100 200), CIRCULARSTRING (100 200, 120.66081412152852 195.5316456965444, 137.6288347353439 182.92523039342592), (137.6288347353439 182.92523039342592, 180 220, 110 260), (110 260, 40 220)))
+ </op>
+ </test>
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (0 0, -50 130, 0 260, 50 280, 110 260), (110 260, 40 220, 100 200), CIRCULARSTRING (100 200, 120.66081412152852 195.5316456965444, 137.6288347353439 182.92523039342592), (137.6288347353439 182.92523039342592, 100 150, 133.218191941496 112.62953406581698), CIRCULARSTRING (133.218191941496 112.62953406581698, 117.76902787564433 103.26391492267913, 100 100), (100 100, 40 60, 110 60), CIRCULARSTRING (110 60, 90 20, 110 0), (110 0, 0 0)))
+ </op>
+ </test>
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (0 0, -50 130, 0 260, 50 280, 110 260), (110 260, 220 260, 220 0), CIRCULARSTRING (220 0, 120 20, 110 0), (110 0, 0 0)), COMPOUNDCURVE ((40 60, 110 60, 180 60, 133.218191941496 112.62953406581698), CIRCULARSTRING (133.218191941496 112.62953406581698, 117.76902787564433 103.26391492267913, 100 100), (100 100, 40 60)), COMPOUNDCURVE ((100 150, 133.218191941496 112.62953406581698), CIRCULARSTRING (133.218191941496 112.62953406581698, 149.90186898086148 146.8689503011078, 137.6288347353439 182.92523039342592), (137.6288347353439 182.92523039342592, 100 150)), COMPOUNDCURVE ((40 220, 100 200), CIRCULARSTRING (100 200, 120.66081412152852 195.5316456965444, 137.6288347353439 182.92523039342592), (137.6288347353439 182.92523039342592, 180 220, 110 260), (110 260, 40 220)))
+ </op>
+ </test>
- </case>
+ </case>
+
+ <case>
+ <desc>AA - simple polygons with two touching holes in their symDifference</desc>
+ <a>
+ CURVEPOLYGON(COMPOUNDCURVE((0 0, 120 0, 120 50, 70 50), CIRCULARSTRING(70 50, 120 100, 70 150), (70 150, 120 150, 120 190, 0 190, 0 0)))
+ </a>
+ <b>
+ CURVEPOLYGON(COMPOUNDCURVE((230 0, 120 0, 120 50, 170 50), CIRCULARSTRING(170 50, 120 100, 170 150), (170 150, 120 150, 120 190, 230 190, 230 0)))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (LINESTRING (120 150, 120 190), LINESTRING (120 0, 120 50), POINT (120 100))
+ </op>
+ </test>
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ CURVEPOLYGON ((0 0, 0 190, 120 190, 230 190, 230 0, 120 0, 0 0), COMPOUNDCURVE (CIRCULARSTRING (70 150, 105.35533905932738 135.35533905932738, 120 100), CIRCULARSTRING (120 100, 134.64466094067262 135.35533905932738, 170 150), (170 150, 120 150, 70 150)), COMPOUNDCURVE ((70 50, 120 50, 170 50), CIRCULARSTRING (170 50, 134.64466094067262 64.64466094067262, 120 100, 105.35533905932738 64.64466094067262, 70 50)))
+ </op>
+ </test>
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE ((0 0, 0 190, 120 190, 120 150, 70 150), CIRCULARSTRING (70 150, 105.35533905932738 135.35533905932738, 120 100, 105.35533905932738 64.64466094067262, 70 50), (70 50, 120 50, 120 0), (120 0, 0 0)))
+ </op>
+ </test>
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ CURVEPOLYGON ((0 0, 0 190, 120 190, 230 190, 230 0, 120 0, 0 0), COMPOUNDCURVE (CIRCULARSTRING (70 150, 105.35533905932738 135.35533905932738, 120 100), CIRCULARSTRING (120 100, 134.64466094067262 135.35533905932738, 170 150), (170 150, 120 150, 70 150)), COMPOUNDCURVE ((70 50, 120 50, 170 50), CIRCULARSTRING (170 50, 134.64466094067262 64.64466094067262, 120 100, 105.35533905932738 64.64466094067262, 70 50)))
+ </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>
+ MULTISURFACE( CURVEPOLYGON ( CIRCULARSTRING (0 0, 20 40, 60 60, 40 20, 0 0)), CURVEPOLYGON( CIRCULARSTRING (60 90, 60 60, 90 60, 90 90, 60 90)), CURVEPOLYGON( COMPOUNDCURVE(CIRCULARSTRING(90 90, 100 120, 70 120), (70 120, 90 90))), ( (120 70, 90 90, 120 80, 120 70)))
+ </b>
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ CURVEPOLYGON ((0 0, 0 230, 210 230, 210 0, 0 0), COMPOUNDCURVE ((70 120, 90 90), CIRCULARSTRING (90 90, 100 120, 70 120)), CIRCULARSTRING (60 90, 60 60, 90 60, 96.21320343559643 75, 90 90, 75 96.21320343559643, 60 90), CIRCULARSTRING (0 0, 40 20, 60 60, 20 40, 0 0), (90 90, 120 70, 120 80, 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>
+ MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (0 0, 20 40, 60 60, 40 20, 0 0)), CURVEPOLYGON (CIRCULARSTRING (60 90, 60 60, 90 60, 90 90, 60 90)))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (60 90, 90 90, 90 60, 60 60, 60 90)), CURVEPOLYGON (CIRCULARSTRING (0 0, 20 40, 60 60, 40 20, 0 0)))
+ </op>
+ </test>
+
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ CURVEPOLYGON ((0 0, 0 300, 340 300, 340 0, 0 0), CIRCULARSTRING (60 90, 60 60, 90 60, 90 90, 60 90), CIRCULARSTRING (0 0, 40 20, 60 60, 20 40, 0 0))
+ </op>
+ </test>
+ </case>
+ <case>
+ <desc>AmA - A simple, B connected multiSurface touching A at interior of edge</desc>
+ <a>
+ CURVEPOLYGON (COMPOUNDCURVE((0 0, 120 0, 120 100, 0 100), CIRCULARSTRING(0 100, -50 50,0 0)))
+ </a>
+ <b>
+ MULTISURFACE(CURVEPOLYGON(COMPOUNDCURVE((60 60, -30 10), CIRCULARSTRING(-30 10, 50 30, 60 60))),((60 80, 60 60, 100 60, 100 80, 60 80)))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((-30 10, 60 60), CIRCULARSTRING (60 60, 50 30, -30 10))), ((60 60, 60 80, 100 80, 100 60, 60 60)))
+ </op>
+ </test>
+
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-30 10, -47.43416490252569 65.8113883008419, 0 100), (0 100, 120 100, 120 0, 0 0), CIRCULARSTRING (0 0, -15.811388300841891 2.565835097474306, -30 10)))
+ </op>
+ </test>
+
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-30 10, -47.43416490252569 65.8113883008419, 0 100), (0 100, 120 100, 120 0, 0 0), CIRCULARSTRING (0 0, -15.811388300841891 2.565835097474306, -30 10)), COMPOUNDCURVE (CIRCULARSTRING (-30 10, 50 30, 60 60), (60 60, -30 10)), (60 60, 100 60, 100 80, 60 80, 60 60))
+ </op>
+ </test>
+
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-30 10, -47.43416490252569 65.8113883008419, 0 100), (0 100, 120 100, 120 0, 0 0), CIRCULARSTRING (0 0, -15.811388300841891 2.565835097474306, -30 10)), COMPOUNDCURVE (CIRCULARSTRING (-30 10, 50 30, 60 60), (60 60, -30 10)), (60 60, 100 60, 100 80, 60 80, 60 60))
+ </op>
+ </test>
+
+ </case>
+ <case>
+ <desc>AA - simple polygons with hole touching shell</desc>
+ <a>
+ POLYGON ((20 0, 20 160, 200 160, 200 0, 20 0))
+ </a>
+ <b>
+ CURVEPOLYGON (COMPOUNDCURVE((0 80, 0 240, 220 240, 220 80), CIRCULARSTRING(220 80, 110 100, 0 80)), COMPOUNDCURVE((110 100, 120 120), CIRCULARSTRING(120 120, 110 120, 110 100)))
+ </b>
+
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE ((0 80, 0 240, 220 240, 220 80), CIRCULARSTRING (220 80, 210.05709729666793 83.54869072597688, 200 86.75950277309494), (200 86.75950277309494, 200 0, 20 0), (20 0, 20 86.75950277309494), CIRCULARSTRING (20 86.75950277309494, 9.942902703332095 83.54869072597688, 0 80)))
+ </op>
+ </test>
+
+ </case>
+ <case>
+ <desc>mAmA - complex polygons touching and overlapping</desc>
+ <a>
+ MULTISURFACE (CURVEPOLYGON(COMPOUNDCURVE((120 340, 120 200, 140 200), CIRCULARSTRING(140 200, 130 240, 140 280, 150 285, 160 280, 170 240, 160 200), (160 200, 180 200, 180 280, 200 280, 200 200, 220 200, 220 340, 120 340))), CURVEPOLYGON(COMPOUNDCURVE((360 200, 220 200, 220 180, 300 180), CIRCULARSTRING(300 180, 310 170, 300 160), (300 160, 220 160, 220 140, 300 140, 300 120, 220 120, 220 100, 360 100, 360 200))))
+
+ </a>
+ <b>
+ MULTISURFACE (((100 220, 100 200, 300 200, 300 220, 100 220)), CURVEPOLYGON(COMPOUNDCURVE((280 180, 280 160, 300 160), CIRCULARSTRING(300 160, 310 170, 300 180), (300 180, 280 180))), CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(220 140, 210 130, 220 120), (220 120, 240 120), CIRCULARSTRING(240 120, 230 130, 240 140), (240 140, 220 140))), CURVEPOLYGON(COMPOUNDCURVE((160 240, 200 240), CIRCULARSTRING(200 240, 180 220, 160 240))))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (168.42105263157896 223.69270170017927, 169.6043423048847 231.80821978090873, 170 240), (170 240, 180 240, 180 220), CIRCULARSTRING (180 220, 173.92323959647965 220.94552590601864, 168.42105263157896 223.69270170017927))), CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (160 200, 164.43870865546864 209.7594383790319, 167.6135582092915 220), (167.6135582092915 220, 180 220, 180 200, 160 200))), CURVEPOLYGON (COMPOUNDCURVE ((120 200, 120 220, 132.3864417907085 220), CIRCULARSTRING (132.3864417907085 220, 135.56129134453133 209.75943837903196, 140 200), (140 200, 120 200))), COMPOUNDCURVE ((280 160, 300 160), CIRCULARSTRING (300 160, 310 170, 300 180), (300 180, 280 180)), POLYGON ((200 200, 200 220, 220 220, 220 200, 200 200)), LINESTRING (220 200, 300 200), LINESTRING (220 140, 240 140), LINESTRING (220 120, 240 120), POINT (200 240))
+ </op>
+ </test>
+
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE ((100 200, 100 220, 120 220), (120 220, 120 340, 220 340, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, 220 120), CIRCULARSTRING (220 120, 210 130, 220 140), (220 140, 220 160, 280 160, 280 180, 220 180, 220 200, 200 200, 180 200, 160 200, 140 200, 120 200, 100 200)), COMPOUNDCURVE ((240 120, 300 120, 300 140, 240 140), CIRCULARSTRING (240 140, 230 130, 240 120)), COMPOUNDCURVE ((180 220, 200 220, 200 240), CIRCULARSTRING (200 240, 194.14213562373095 225.85786437626905, 180 220)), COMPOUNDCURVE ((132.3864417907085 220, 167.6135582092915 220), CIRCULARSTRING (167.6135582092915 220, 168.0378348148087 221.84186162436941, 168.42105263157896 223.69270170017927, 162.22953366722723 230.82337064517753, 160 240), (160 240, 170 240), CIRCULARSTRING (170 240, 167.4621125123532 260.61552812808833, 160 280, 150 285, 140 280, 130.6761692470721 250.70007323113106, 132.3864417907085 220)), (180 240, 200 240, 200 280, 180 280, 180 240))
+ </op>
+ </test>
+
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (167.6135582092915 220, 168.0378348148087 221.84186162436941, 168.42105263157896 223.69270170017927, 173.92323959647965 220.94552590601864, 180 220), (180 220, 167.6135582092915 220))), CURVEPOLYGON (COMPOUNDCURVE ((220 100, 220 120, 240 120, 300 120, 300 140, 240 140, 220 140, 220 160, 280 160, 300 160), CIRCULARSTRING (300 160, 310 170, 300 180), (300 180, 280 180, 220 180, 220 200, 300 200), (300 200, 360 200, 360 100, 220 100))), CURVEPOLYGON (COMPOUNDCURVE ((120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, 170 240), CIRCULARSTRING (170 240, 167.4621125123532 260.61552812808833, 160 280, 150 285, 140 280, 130.6761692470721 250.70007323113106, 132.3864417907085 220), (132.3864417907085 220, 120 220))))
+ </op>
+ </test>
+
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (167.6135582092915 220, 168.0378348148087 221.84186162436941, 168.42105263157896 223.69270170017927, 173.92323959647965 220.94552590601864, 180 220), (180 220, 167.6135582092915 220))), CURVEPOLYGON (COMPOUNDCURVE ((120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, 170 240), CIRCULARSTRING (170 240, 167.4621125123532 260.61552812808833, 160 280, 150 285, 140 280, 130.6761692470721 250.70007323113106, 132.3864417907085 220), (132.3864417907085 220, 120 220))), CURVEPOLYGON (COMPOUNDCURVE ((180 220, 180 240, 200 240), CIRCULARSTRING (200 240, 194.14213562373095 225.85786437626905, 180 220))), CURVEPOLYGON (COMPOUNDCURVE ((220 100, 220 120), CIRCULARSTRING (220 120, 210 130, 220 140), (220 140, 220 160, 280 160, 280 180, 220 180, 220 200), (220 200, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100)), COMPOUNDCURVE ((240 120, 300 120, 300 140, 240 140), CIRCULARSTRING (240 140, 230 130,
240 120))), CURVEPOLYGON (COMPOUNDCURVE ((160 240, 170 240), CIRCULARSTRING (170 240, 169.6043423048847 231.80821978090873, 168.42105263157896 223.69270170017927, 162.22953366722723 230.82337064517753, 160 240))), CURVEPOLYGON (COMPOUNDCURVE ((132.3864417907085 220, 167.6135582092915 220), CIRCULARSTRING (167.6135582092915 220, 164.43870865546864 209.7594383790319, 160 200), (160 200, 140 200), CIRCULARSTRING (140 200, 135.56129134453133 209.75943837903196, 132.3864417907085 220))), ((180 200, 180 220, 200 220, 200 200, 180 200)), ((100 200, 100 220, 120 220, 120 200, 100 200)))
+ </op>
+ </test>
+ </case>
+ <case>
+ <desc>mAmA - complex polygons touching</desc>
+ <a>
+ MULTISURFACE (CURVEPOLYGON(CIRCULARSTRING(110 200, 100 190, 110 180, 120 190, 110 200)), CURVEPOLYGON(COMPOUNDCURVE((220 240, 60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 190 180, 190 210), CIRCULARSTRING (190 210, 174.18861169915812 207.4341649025257, 160 200, 155 210, 160 220, 190 230, 220 220, 230 230, 220 240)), CIRCULARSTRING(80 220, 70 190, 80 160, 110 170, 140 160, 150 190, 140 220, 110 210, 80 220)), CURVEPOLYGON(CIRCULARSTRING(240 190, 270 160, 300 190, 270 220, 240 190)))
+ </a>
+ <b>
+ MULTISURFACE (CURVEPOLYGON(CIRCULARSTRING(80 220, 70 190, 80 160, 110 170, 140 160, 150 190, 140 220, 110 210, 80 220), CIRCULARSTRING(100 190, 110 180, 120 190, 110 200, 100 190)), CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(220 240, 230 230, 220 220, 190 230, 160 220, 155 210, 160 200, 190 210, 220 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="intersection" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CIRCULARSTRING (190 210, 174.18861169915812 207.4341649025257, 160 200, 155 210, 160 220, 190 230, 220 220, 230 230, 220 240), CIRCULARSTRING (100 190, 102.92893218813452 197.07106781186548, 110 200, 117.07106781186548 197.07106781186548, 120 190, 117.07106781186548 182.92893218813452, 110 180, 102.92893218813452 182.92893218813452, 100 190), CIRCULARSTRING (80 160, 70 190, 80 220, 110 210, 140 220, 150 190, 140 160, 110 170, 80 160), LINESTRING (190 180, 160 180, 160 160, 220 160, 220 140), POINT (300 190), POINT (270 220), POINT (270 160), POINT (240 190))
+ </op>
+ </test>
+
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (240 190, 248.78679656440357 211.21320343559643, 270 220, 291.2132034355964 211.21320343559643, 300 190, 291.2132034355964 168.78679656440357, 270 160, 248.78679656440357 168.78679656440357, 240 190)), CURVEPOLYGON ((60 140, 60 240, 220 240, 320 240, 320 140, 220 140, 60 140), COMPOUNDCURVE ((190 180, 220 180, 220 200), CIRCULARSTRING (220 200, 205.81138830084188 207.43416490252568, 190 210), (190 210, 190 180)), (240 160, 270 160, 300 160, 300 190, 300 220, 270 220, 240 220, 240 190, 240 160)))
+ </op>
+ </test>
+
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((60 140, 60 240, 220 240), CIRCULARSTRING (220 240, 230 230, 220 220, 190 230, 160 220, 155 210, 160 200, 174.18861169915812 207.4341649025257, 190 210), (190 210, 190 180, 160 180, 160 160, 220 160, 220 140), (220 140, 60 140)), CIRCULARSTRING (80 160, 110 170, 140 160, 150 190, 140 220, 110 210, 80 220, 70 190, 80 160)), CURVEPOLYGON (CIRCULARSTRING (240 190, 248.78679656440357 211.21320343559643, 270 220, 291.2132034355964 211.21320343559643, 300 190, 291.2132034355964 168.78679656440357, 270 160, 248.78679656440357 168.78679656440357, 240 190)), CURVEPOLYGON (CIRCULARSTRING (100 190, 102.92893218813452 197.07106781186548, 110 200, 117.07106781186548 197.07106781186548, 120 190, 117.07106781186548 182.92893218813452, 110 180, 102.92893218813452 182.92893218813452, 100 190)))
+ </op>
+ </test>
+
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (240 190, 248.78679656440357 211.21320343559643, 270 220, 291.2132034355964 211.21320343559643, 300 190, 291.2132034355964 168.78679656440357, 270 160, 248.78679656440357 168.78679656440357, 240 190)), CURVEPOLYGON ((60 140, 60 240, 220 240, 320 240, 320 140, 220 140, 60 140), COMPOUNDCURVE ((190 180, 220 180, 220 200), CIRCULARSTRING (220 200, 205.81138830084188 207.43416490252568, 190 210), (190 210, 190 180)), (240 160, 270 160, 300 160, 300 190, 300 220, 270 220, 240 220, 240 190, 240 160)))
+ </op>
+ </test>
+ </case>
+ <case>
+ <desc>AA - hole intersecting boundary to produce line</desc>
+ <a>
+ CURVEPOLYGON (COMPOUNDCURVE((0 160, 140 160, 140 150), CIRCULARSTRING(140 150, 90 100, 140 50), (140 50, 140 0, 0 0, 0 160)))
+ </a>
+ <b>
+ CURVEPOLYGON ((160 160, 50 160, 50 20, 160 20, 160 160), COMPOUNDCURVE((110 140, 60 140, 60 60, 110 60), CIRCULARSTRING(110 60, 90 100, 110 140)))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON (COMPOUNDCURVE ((50 20, 50 160), (50 160, 140 160, 140 150), CIRCULARSTRING (140 150, 124.18861169915812 147.4341649025257, 110 140), (110 140, 60 140, 60 60, 110 60), CIRCULARSTRING (110 60, 124.18861169915812 52.565835097474306, 140 50), (140 50, 140 20, 50 20))), CIRCULARSTRING (110 60, 90 100, 110 140))
+ </op>
+ </test>
+
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ POLYGON ((0 0, 0 160, 50 160, 140 160, 160 160, 160 20, 140 20, 140 0, 0 0))
+ </op>
+ </test>
+
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((60 60, 60 140, 110 140), CIRCULARSTRING (110 140, 90 100, 110 60), (110 60, 60 60))), ((0 0, 0 160, 50 160, 50 20, 140 20, 140 0, 0 0)))
+ </op>
+ </test>
+
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE ((60 60, 60 140, 110 140), CIRCULARSTRING (110 140, 124.18861169915812 147.4341649025257, 140 150), (140 150, 140 160, 160 160, 160 20, 140 20, 140 50), CIRCULARSTRING (140 50, 124.18861169915812 52.565835097474306, 110 60), (110 60, 60 60))), ((0 0, 0 160, 50 160, 50 20, 140 20, 140 0, 0 0)))
+ </op>
+ </test>
+ </case>
+ <case>
+ <desc>AA - Polygons which stress hole assignment</desc>
+ <a>
+ CURVEPOLYGON ((0 0, 4 0, 4 4, 0 4, 0 0), COMPOUNDCURVE((2 1, 1 1, 1 2), CIRCULARSTRING(1 2, 1.7 1.7, 2 1)), COMPOUNDCURVE((1 2, 1 3, 2 3), CIRCULARSTRING(2 3, 1.7 2.3, 1 2)), COMPOUNDCURVE((2 3, 3 3, 3 2), CIRCULARSTRING(3 2, 2.3 2.3, 2 3)))
+ </a>
+ <b>
+ CURVEPOLYGON (COMPOUNDCURVE((2 1, 3 1, 3 2), CIRCULARSTRING(3 2, 2.3 1.7, 2 1)))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (2 1, 2.3 1.7, 3 2), (3 2, 3 1, 2 1)))
+ </op>
+ </test>
+
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ CURVEPOLYGON ((0 0, 0 4, 4 4, 4 0, 0 0), COMPOUNDCURVE (CIRCULARSTRING (2 3, 2.3 2.3, 3 2), (3 2, 3 3, 2 3)), COMPOUNDCURVE (CIRCULARSTRING (1 2, 1.7 2.3, 2 3), (2 3, 1 3, 1 2)), COMPOUNDCURVE ((1 1, 2 1), CIRCULARSTRING (2 1, 1.7 1.7, 1 2), (1 2, 1 1)))
+ </op>
+ </test>
+
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (1 2, 1.7 2.3, 2 3, 2.3 2.3, 3 2, 2.3 1.7, 2 1, 1.7 1.7, 1 2)), ((0 0, 0 4, 4 4, 4 0, 0 0), (1 1, 2 1, 3 1, 3 2, 3 3, 2 3, 1 3, 1 2, 1 1)))
+ </op>
+ </test>
+
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (1 2, 1.7 2.3, 2 3, 2.3 2.3, 3 2, 2.3 1.7, 2 1, 1.7 1.7, 1 2)), ((0 0, 0 4, 4 4, 4 0, 0 0), (1 1, 2 1, 3 1, 3 2, 3 3, 2 3, 1 3, 1 2, 1 1)))
+ </op>
+ </test>
+ </case>
</run>
-----------------------------------------------------------------------
Summary of changes:
.../tests/general/TestOverlayCurvesAA.xml | 484 +++++++++++++++------
1 file changed, 363 insertions(+), 121 deletions(-)
hooks/post-receive
--
GEOS
More information about the geos-commits
mailing list