[geos-commits] [SCM] GEOS branch main updated. b76f534c34c7f281b884c03ff7f95423ab57ae3a
git at osgeo.org
git at osgeo.org
Wed Aug 12 10:20:31 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 b76f534c34c7f281b884c03ff7f95423ab57ae3a (commit)
from 9d8250fc8d94e8fd48698af7086d94a3b3020ec6 (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 b76f534c34c7f281b884c03ff7f95423ab57ae3a
Author: Daniel Baston <dbaston at gmail.com>
Date: Wed Aug 12 12:24:12 2026 -0400
Add curved line-area overlay XML tests
diff --git a/tests/xmltester/tests/general/TestOverlayCurvesLA.xml b/tests/xmltester/tests/general/TestOverlayCurvesLA.xml
new file mode 100644
index 000000000..1cef3bf89
--- /dev/null
+++ b/tests/xmltester/tests/general/TestOverlayCurvesLA.xml
@@ -0,0 +1,138 @@
+<run>
+
+ <case>
+ <desc>mLmA - A and B complex, disjoint</desc>
+ <a>
+ MULTISURFACE (CURVEPOLYGON((60 320, 60 80, 300 80, 60 320), COMPOUNDCURVE((80 280, 80 100), CIRCULARSTRING(80 100, 170 90, 260 100), (260 100, 80 280))), ((120 160, 140 160, 140 140, 120 160)))
+ </a>
+ <b>
+ MULTICURVE (COMPOUNDCURVE((100 240, 100 180), CIRCULARSTRING(100 180, 160 180, 160 120), (160 120, 220 120)), COMPOUNDCURVE(CIRCULARSTRING(40 360, 20 210, 40 60, 190 40, 340 60), (340 60, 40 360), CIRCULARSTRING(40 360, 20 210, 40 60), (40 60, 40 20)), (120 120, 120 140, 100 140, 100 120, 140 120))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ LINESTRING EMPTY
+ </op>
+ </test>
+
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON ((60 80, 60 320, 300 80, 60 80), COMPOUNDCURVE (CIRCULARSTRING (80 100, 170 90, 260 100), (260 100, 80 280), (80 280, 80 100))), COMPOUNDCURVE (CIRCULARSTRING (40 60, 20 210, 40 360), (40 360, 340 60), CIRCULARSTRING (340 60, 190 40, 40 60)), COMPOUNDCURVE ((100 240, 100 180), CIRCULARSTRING (100 180, 160 180, 160 120), (160 120, 220 120)), POLYGON ((120 160, 140 160, 140 140, 120 160)), LINESTRING (100 120, 100 140, 120 140, 120 120, 100 120), LINESTRING (120 120, 140 120), LINESTRING (40 20, 40 60))
+ </op>
+ </test>
+
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON ((60 80, 60 320, 300 80, 60 80), COMPOUNDCURVE (CIRCULARSTRING (80 100, 170 90, 260 100), (260 100, 80 280), (80 280, 80 100))), ((120 160, 140 160, 140 140, 120 160)))
+ </op>
+ </test>
+
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON ((60 80, 60 320, 300 80, 60 80), COMPOUNDCURVE (CIRCULARSTRING (80 100, 170 90, 260 100), (260 100, 80 280), (80 280, 80 100))), COMPOUNDCURVE (CIRCULARSTRING (40 60, 20 210, 40 360), (40 360, 340 60), CIRCULARSTRING (340 60, 190 40, 40 60)), COMPOUNDCURVE ((100 240, 100 180), CIRCULARSTRING (100 180, 160 180, 160 120), (160 120, 220 120)), POLYGON ((120 160, 140 160, 140 140, 120 160)), LINESTRING (100 120, 100 140, 120 140, 120 120, 100 120), LINESTRING (120 120, 140 120), LINESTRING (40 20, 40 60))
+ </op>
+ </test>
+ </case>
+ <case>
+ <desc>mLmA - A and B complex, overlapping and touching #1</desc>
+ <a>
+ MULTISURFACE (CURVEPOLYGON((60 260, 60 120, 220 120, 220 260, 60 260), COMPOUNDCURVE((80 240, 80 140, 200 140, 200 240), CIRCULARSTRING(200 240, 140 250, 80 240))), CURVEPOLYGON(CIRCULARSTRING(100 220, 90 190, 100 160, 140 150, 180 160, 190 190, 180 220, 140 230, 100 220), COMPOUNDCURVE((120 200, 120 180), CIRCULARSTRING(120 180, 140 160, 160 180), (160 180, 160 200), CIRCULARSTRING(160 200, 140 180, 120 200))))
+ </a>
+ <b>
+ MULTICURVE (COMPOUNDCURVE((40 260, 240 260, 240 240, 200 240), CIRCULARSTRING(200 240, 140 250, 80 240), (80 240, 40 240, 40 220, 100 220), CIRCULARSTRING(100 220, 140 230, 180 220), (180 220, 240 220)), (120 300, 120 80, 140 80, 140 300, 140 80, 120 80, 120 320))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ MULTICURVE (COMPOUNDCURVE (CIRCULARSTRING (140 250, 170.41381265149113 247.4828759089466, 200 240), (200 240, 220 240)), COMPOUNDCURVE ((60 240, 80 240), CIRCULARSTRING (80 240, 99.75235892665049 245.5688992823261, 120 248.9157415774952)), CIRCULARSTRING (140 230, 160.61552812808833 227.4621125123532, 180 220), CIRCULARSTRING (120 248.9157415774952, 129.98531557752852 249.728736519033, 140 250), CIRCULARSTRING (120 227.6135582092915, 129.9290627990683 229.40128093752423, 140 230), CIRCULARSTRING (100 220, 109.7594383790319 224.43870865546864, 120 227.6135582092915), (120 152.3864417907085, 120 180, 120 200, 120 227.6135582092915), (200 220, 220 220), (140 260, 220 260), (140 250, 140 260), (140 180, 140 230), (140 150, 140 160), (140 120, 140 140), (120 260, 140 260), (120 248.9157415774952, 120 260), (120 120, 120 140), (60 260, 120 260), (60 220, 80 220))
+ </op>
+ </test>
+
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON (CIRCULARSTRING (100 160, 90 190, 100 220, 109.7594383790319 224.43870865546864, 120 227.6135582092915, 129.9290627990683 229.40128093752423, 140 230, 160.61552812808833 227.4621125123532, 180 220, 190 190, 180 160, 160.61552812808833 152.5378874876468, 140 150, 129.9290627990683 150.59871906247577, 120 152.3864417907085, 109.7594383790319 155.56129134453136, 100 160), COMPOUNDCURVE (CIRCULARSTRING (120 180, 125.85786437626905 165.85786437626905, 140 160, 154.14213562373095 165.85786437626905, 160 180), (160 180, 160 200), CIRCULARSTRING (160 200, 154.14213562373095 185.85786437626905, 140 180, 125.85786437626905 185.85786437626905, 120 200), (120 200, 120 180))), CURVEPOLYGON ((60 120, 60 220, 60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, 120 120, 60 120), COMPOUNDCURVE ((80 140, 120 140, 140 140, 200 140, 200 220, 200 240), CIRCULARSTRING (200 240, 170.41381265149113 247.4828759089466, 140 250, 129.9
8531557752852 249.728736519033, 120 248.9157415774952, 99.75235892665049 245.5688992823261, 80 240), (80 240, 80 220, 80 140))), LINESTRING (220 240, 240 240, 240 260, 220 260), LINESTRING (120 120, 120 80, 140 80, 140 120), LINESTRING (60 220, 40 220, 40 240, 60 240), LINESTRING (120 260, 120 300, 120 320), LINESTRING (220 220, 240 220), LINESTRING (180 220, 200 220), LINESTRING (140 260, 140 300), LINESTRING (140 230, 140 250), LINESTRING (140 160, 140 180), LINESTRING (140 140, 140 150), LINESTRING (120 227.6135582092915, 120 248.9157415774952), LINESTRING (120 140, 120 152.3864417907085), LINESTRING (80 220, 100 220), LINESTRING (40 260, 60 260))
+ </op>
+ </test>
+
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (100 160, 90 190, 100 220, 109.7594383790319 224.43870865546864, 120 227.6135582092915, 129.9290627990683 229.40128093752423, 140 230, 160.61552812808833 227.4621125123532, 180 220, 190 190, 180 160, 160.61552812808833 152.5378874876468, 140 150, 129.9290627990683 150.59871906247577, 120 152.3864417907085, 109.7594383790319 155.56129134453136, 100 160), COMPOUNDCURVE (CIRCULARSTRING (120 180, 125.85786437626905 165.85786437626905, 140 160, 154.14213562373095 165.85786437626905, 160 180), (160 180, 160 200), CIRCULARSTRING (160 200, 154.14213562373095 185.85786437626905, 140 180, 125.85786437626905 185.85786437626905, 120 200), (120 200, 120 180))), CURVEPOLYGON ((60 120, 60 220, 60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, 120 120, 60 120), COMPOUNDCURVE ((80 140, 120 140, 140 140, 200 140, 200 220, 200 240), CIRCULARSTRING (200 240, 170.41381265149113 247.4828759089466, 140 250, 129.9853155
7752852 249.728736519033, 120 248.9157415774952, 99.75235892665049 245.5688992823261, 80 240), (80 240, 80 220, 80 140))))
+ </op>
+ </test>
+
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON (CIRCULARSTRING (100 160, 90 190, 100 220, 109.7594383790319 224.43870865546864, 120 227.6135582092915, 129.9290627990683 229.40128093752423, 140 230, 160.61552812808833 227.4621125123532, 180 220, 190 190, 180 160, 160.61552812808833 152.5378874876468, 140 150, 129.9290627990683 150.59871906247577, 120 152.3864417907085, 109.7594383790319 155.56129134453136, 100 160), COMPOUNDCURVE (CIRCULARSTRING (120 180, 125.85786437626905 165.85786437626905, 140 160, 154.14213562373095 165.85786437626905, 160 180), (160 180, 160 200), CIRCULARSTRING (160 200, 154.14213562373095 185.85786437626905, 140 180, 125.85786437626905 185.85786437626905, 120 200), (120 200, 120 180))), CURVEPOLYGON ((60 120, 60 220, 60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, 120 120, 60 120), COMPOUNDCURVE ((80 140, 120 140, 140 140, 200 140, 200 220, 200 240), CIRCULARSTRING (200 240, 170.41381265149113 247.4828759089466, 140 250, 129.9
8531557752852 249.728736519033, 120 248.9157415774952, 99.75235892665049 245.5688992823261, 80 240), (80 240, 80 220, 80 140))), LINESTRING (220 240, 240 240, 240 260, 220 260), LINESTRING (120 120, 120 80, 140 80, 140 120), LINESTRING (60 220, 40 220, 40 240, 60 240), LINESTRING (120 260, 120 300, 120 320), LINESTRING (220 220, 240 220), LINESTRING (180 220, 200 220), LINESTRING (140 260, 140 300), LINESTRING (140 230, 140 250), LINESTRING (140 160, 140 180), LINESTRING (140 140, 140 150), LINESTRING (120 227.6135582092915, 120 248.9157415774952), LINESTRING (120 140, 120 152.3864417907085), LINESTRING (80 220, 100 220), LINESTRING (40 260, 60 260))
+ </op>
+ </test>
+
+
+ </case>
+ <case>
+ <desc>mLmA - A and B complex, overlapping and touching #2</desc>
+ <a>
+ MULTISURFACE (CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(280 320, 140 340, 60 320, 70 220, 60 120), (60 120, 280 120, 280 320)), COMPOUNDCURVE((120 260, 120 180, 240 180), CIRCULARSTRING(240 180, 250 220, 240 260, 200 270, 120 260))), CURVEPOLYGON(CIRCULARSTRING(280 400, 300 420, 320 400, 340 380, 320 360, 300 340, 280 360, 260 380, 280 400)), CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(300 240, 290 230, 300 220, 310 210, 320 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 340))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (LINESTRING (220 300, 260 300, 260 240), LINESTRING (80 160, 260 160, 260 240), LINESTRING (80 160, 80 300, 220 300), LINESTRING (260 240, 280 240), LINESTRING (247.6135582092915 240, 260 240), LINESTRING (220 300, 220 337.2281323269014), LINESTRING (220 266.3226580490168, 220 300), LINESTRING (80 140, 80 160), POINT (300 340), POINT (300 240))
+ </op>
+ </test>
+
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (60 120, 70 220, 60 320, 138.78778867384904 339.872037051061, 220 337.2281323269014), CIRCULARSTRING (220 337.2281323269014, 250.46242685793356 330.2245490033514, 280 320), (280 320, 280 240, 280 120, 60 120)), COMPOUNDCURVE ((120 180, 240 180), CIRCULARSTRING (240 180, 249.3238307529279 209.29992676886894, 247.6135582092915 240, 244.43870865546864 250.2405616209681, 240 260, 230.09984033109484 263.4771466136326, 220 266.3226580490168, 169.5121975037094 270.87647813598767, 120 260), (120 260, 120 180))), CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (300 220, 290 230, 300 240), (300 240, 320 240, 320 220), CIRCULARSTRING (320 220, 310 210, 300 220))), CURVEPOLYGON (CIRCULARSTRING (280 360, 260 380, 280 400, 300 420, 320 400, 340 380, 320 360, 314.14213562373095 345.85786437626905, 300 340, 285.85786437626905 345.85786437626905, 280 360)), LINESTRING (280 240, 300 240, 300 340), LINESTRING (220 266.32265804
90168, 220 240, 247.6135582092915 240), LINESTRING (220 337.2281323269014, 220 360))
+ </op>
+ </test>
+
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (60 120, 70 220, 60 320, 138.78778867384904 339.872037051061, 220 337.2281323269014), CIRCULARSTRING (220 337.2281323269014, 250.46242685793356 330.2245490033514, 280 320), (280 320, 280 240, 280 120, 60 120)), COMPOUNDCURVE ((120 180, 240 180), CIRCULARSTRING (240 180, 249.3238307529279 209.29992676886894, 247.6135582092915 240, 244.43870865546864 250.2405616209681, 240 260, 230.09984033109484 263.4771466136326, 220 266.3226580490168, 169.5121975037094 270.87647813598767, 120 260), (120 260, 120 180))), CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (300 220, 290 230, 300 240), (300 240, 320 240, 320 220), CIRCULARSTRING (320 220, 310 210, 300 220))), CURVEPOLYGON (CIRCULARSTRING (280 360, 260 380, 280 400, 300 420, 320 400, 340 380, 320 360, 314.14213562373095 345.85786437626905, 300 340, 285.85786437626905 345.85786437626905, 280 360)))
+ </op>
+ </test>
+
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (60 120, 70 220, 60 320, 138.78778867384904 339.872037051061, 220 337.2281323269014), CIRCULARSTRING (220 337.2281323269014, 250.46242685793356 330.2245490033514, 280 320), (280 320, 280 240, 280 120, 60 120)), COMPOUNDCURVE ((120 180, 240 180), CIRCULARSTRING (240 180, 249.3238307529279 209.29992676886894, 247.6135582092915 240, 244.43870865546864 250.2405616209681, 240 260, 230.09984033109484 263.4771466136326, 220 266.3226580490168, 169.5121975037094 270.87647813598767, 120 260), (120 260, 120 180))), CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (300 220, 290 230, 300 240), (300 240, 320 240, 320 220), CIRCULARSTRING (320 220, 310 210, 300 220))), CURVEPOLYGON (CIRCULARSTRING (280 360, 260 380, 280 400, 300 420, 320 400, 340 380, 320 360, 314.14213562373095 345.85786437626905, 300 340, 285.85786437626905 345.85786437626905, 280 360)), LINESTRING (280 240, 300 240, 300 340), LINESTRING (220 266.32265804
90168, 220 240, 247.6135582092915 240), LINESTRING (220 337.2281323269014, 220 360))
+ </op>
+ </test>
+
+ </case>
+<case>
+ <desc>mLmA - A and B complex, overlapping and touching #3</desc>
+ <a>
+ MULTISURFACE (CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(120 180, 100 120, 60 80, 120 90, 180 80, 140 120, 120 180))), ((100 240, 140 240, 120 220, 100 240)))
+ </a>
+ <b>
+ MULTICURVE (CIRCULARSTRING(180 220, 120 180, 60 220, 120 270, 180 220), (60 300, 60 40), (100 100, 140 100))
+ </b>
+ <test>
+ <op name="intersection" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (LINESTRING (100 100, 140 100), POINT (120 180), POINT (60 80))
+ </op>
+ </test>
+
+ <test>
+ <op name="union" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON (CIRCULARSTRING (60 80, 100 120, 120 180, 140 120, 180 80, 120 90, 60 80)), CIRCULARSTRING (60 220, 120 270, 180 220, 156.0555127546399 190.91673086804016, 120 180, 83.94448724536011 190.91673086804016, 60 220), POLYGON ((100 240, 140 240, 120 220, 100 240)), LINESTRING (60 40, 60 80, 60 80.00000000000001, 60 220), LINESTRING (60 220, 60 300))
+ </op>
+ </test>
+
+ <test>
+ <op name="difference" arg1="A" arg2="B">
+ MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (60 80, 100 120, 120 180, 140 120, 180 80, 120 90, 60 80)), ((100 240, 140 240, 120 220, 100 240)))
+ </op>
+ </test>
+
+ <test>
+ <op name="symdifference" arg1="A" arg2="B">
+ GEOMETRYCOLLECTION (CURVEPOLYGON (CIRCULARSTRING (60 80, 100 120, 120 180, 140 120, 180 80, 120 90, 60 80)), CIRCULARSTRING (60 220, 120 270, 180 220, 156.0555127546399 190.91673086804016, 120 180, 83.94448724536011 190.91673086804016, 60 220), POLYGON ((100 240, 140 240, 120 220, 100 240)), LINESTRING (60 40, 60 80, 60 80.00000000000001, 60 220), LINESTRING (60 220, 60 300))
+ </op>
+ </test>
+
+</case>
+
+</run>
-----------------------------------------------------------------------
Summary of changes:
.../tests/general/TestOverlayCurvesLA.xml | 138 +++++++++++++++++++++
1 file changed, 138 insertions(+)
create mode 100644 tests/xmltester/tests/general/TestOverlayCurvesLA.xml
hooks/post-receive
--
GEOS
More information about the geos-commits
mailing list