jsts/testxml/general/TestRelateAA.xml
2016-02-05 07:59:16 +01:00

236 lines
6.2 KiB
XML

<run>
<precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
<case>
<desc>AA disjoint</desc>
<a>
POLYGON(
(0 0, 80 0, 80 80, 0 80, 0 0))
</a>
<b>
POLYGON(
(100 200, 100 140, 180 140, 180 200, 100 200))
</b>
<test><op name="relate" arg3="FF2FF1212" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> false </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
<case>
<desc>AA equal but opposite orientation</desc>
<a>
POLYGON(
(0 0, 140 0, 140 140, 0 140, 0 0))
</a>
<b>
POLYGON(
(140 0, 0 0, 0 140, 140 140, 140 0))
</b>
<test>
<op name="relate" arg3="2FFF1FFF2" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> true </op></test>
</case>
<case>
<desc>AA A-shell contains B-shell</desc>
<a>
POLYGON(
(40 60, 360 60, 360 300, 40 300, 40 60))
</a>
<b>
POLYGON(
(120 100, 280 100, 280 240, 120 240, 120 100))
</b>
<test>
<op name="relate" arg3="212FF1FF2" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> true </op></test>
</case>
<case>
<desc>AA A-shell contains B-shell contains A-hole</desc>
<a>
POLYGON(
(40 60, 420 60, 420 320, 40 320, 40 60),
(200 140, 160 220, 260 200, 200 140))
</a>
<b>
POLYGON(
(80 100, 360 100, 360 280, 80 280, 80 100))
</b>
<test>
<op name="relate" arg3="2121F12F2" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
<case>
<desc>AA A-shell contains B-shell contains A-hole contains B-hole</desc>
<a>
POLYGON(
(0 280, 0 0, 260 0, 260 280, 0 280),
(220 240, 40 240, 40 40, 220 40, 220 240))
</a>
<b>
POLYGON(
(20 260, 240 260, 240 20, 20 20, 20 260),
(160 180, 80 180, 120 120, 160 180))
</b>
<test>
<op name="relate" arg3="2121F1212" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
<case>
<desc>AA A-shell overlapping B-shell</desc>
<a>
POLYGON(
(60 80, 200 80, 200 220, 60 220, 60 80))
</a>
<b>
POLYGON(
(120 140, 260 140, 260 260, 120 260, 120 140))
</b>
<test>
<op name="relate" arg3="212101212" arg1="A" arg2="B">true</op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
<case>
<desc>AA A-shell overlapping B-shell at B-vertex</desc>
<a>
POLYGON(
(60 220, 220 220, 140 140, 60 220))
</a>
<b>
POLYGON(
(100 180, 180 180, 180 100, 100 100, 100 180))
</b>
<test>
<op name="relate" arg3="212101212" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
<case>
<desc>AA A-shell overlapping B-shell at A &amp; B-vertex</desc>
<a>
POLYGON(
(40 40, 180 40, 180 180, 40 180, 40 40))
</a>
<b>
POLYGON(
(180 40, 40 180, 160 280, 300 140, 180 40))
</b>
<test>
<op name="relate" arg3="212101212" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
<case>
<desc>AmA A-shells overlapping B-shell at A-vertex</desc>
<a>
POLYGON(
(100 60, 140 100, 100 140, 60 100, 100 60))
</a>
<b>
MULTIPOLYGON(
(
(80 40, 120 40, 120 80, 80 80, 80 40)),
(
(120 80, 160 80, 160 120, 120 120, 120 80)),
(
(80 120, 120 120, 120 160, 80 160, 80 120)),
(
(40 80, 80 80, 80 120, 40 120, 40 80)))
</b>
<test>
<op name="relate" arg3="21210F212" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
<case>
<desc>AA A-shell touches B-shell, which contains A-hole</desc>
<a>
POLYGON(
(40 280, 200 280, 200 100, 40 100, 40 280),
(100 220, 120 220, 120 200, 100 180, 100 220))
</a>
<b>
POLYGON(
(40 280, 180 260, 180 120, 60 120, 40 280))
</b>
<test>
<op name="relate" arg3="2121012F2" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
<case>
<desc>AA - A-hole contains B, boundaries touch in line</desc>
<a>
POLYGON(
(0 200, 0 0, 200 0, 200 200, 0 200),
(20 180, 130 180, 130 30, 20 30, 20 180))
</a>
<b>
POLYGON(
(60 90, 130 90, 130 30, 60 30, 60 90))
</b>
<test>
<op name="relate" arg3="FF2F11212" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
<case>
<desc>AA - A-hole contains B, boundaries touch in points</desc>
<a>
POLYGON(
(150 150, 410 150, 280 20, 20 20, 150 150),
(170 120, 330 120, 260 50, 100 50, 170 120))
</a>
<b>
POLYGON(
(270 90, 200 50, 150 80, 210 120, 270 90))
</b>
<test>
<op name="relate" arg3="FF2F01212" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
<case>
<desc>AA - A contained completely in B</desc>
<a>
POLYGON ((0 0, 20 80, 120 80, -20 120, 0 0))
</a>
<b>
POLYGON ((60 180, -100 120, -140 60, -40 20, -100 -80, 40 -20, 140 -100, 140 40, 260 160, 80 120, 60 180))
</b>
<test>
<op name="relate" arg3="2FF1FF212" arg1="A" arg2="B"> true </op>
</test>
<test> <op name="intersects" arg1="A" arg2="B"> true </op></test>
<test> <op name="contains" arg1="A" arg2="B"> false </op></test>
</case>
</run>