SDO_GEOM.SDO_UNION Returns Incorrect Result When SVA=TRUE/FALSE (Doc ID 2217740.1)

Last updated on FEBRUARY 01, 2017

Applies to:

Oracle Spatial and Graph - Version 12.1.0.2 and later
Information in this document applies to any platform.

Symptoms

On 12.1.0.2 version, a query using SDO_GEOM.SDO_UNION is returning an incorrect result as shown in the following example:

Geometry A:
select mdsys.sdo_geometry('MULTIPOLYGON (((681455.209 5638488.459, 681450.247 5638505.621, 681446.717 5638510.047, 681446.072 5638511.215, 681445.808 5638511.303, 681436.132 5638523.409, 681428.997 5638529.497, 681420.99 5638532.364, 681416.147 5638532.36, 681411.602 5638530.641, 681410.375 5638530.177, 681400.257 5638522.8, 681390.209 5638515.735, 681380.662 5638509.02, 681372.765 5638503.08, 681370.605 5638502.306, 681362.809 5638499.511, 681341.328 5638494.633, 681327.359 5638491.461, 681316.436 5638487.226, 681306.69 5638479.078, 681300.68 5638474.053, 681296.262 5638473.422, 681289.171 5638476.235, 681275.227 5638485.551, 681270.621 5638489.24, 681263.12 5638492.617, 681247.626 5638492.375, 681243.108 5638489.716, 681239.488 5638487.587, 681232.905 5638482.668, 681222.92 5638477.86, 681198.931 5638467.682, 681186.946 5638466.841, 681167.859 5638465.502, 681154.221 5638464.01, 681140.101 5638465.125, 681119.256 5638470.095, 681108.658 5638472.292, 681103.656 5638472.521, 681098.367 5638472.763, 681084.78 5638473.386, 681075.451 5638472.068, 681067.965 5638470.822, 681059.081 5638470.177, 681055.285 5638469.769, 681053.358 5638469.903, 681052.736 5638471.456, 681046.716 5638486.476, 681044.086 5638493.038, 681036.43 5638504.074, 681027.156 5638510.641, 681020.117 5638512.982, 681007.121 5638514.143, 680992.493 5638513.995, 680992.21 5638514.001, 680969.949 5638514.509, 680936.778 5638516.893, 680933.573 5638516.944, 680932.291 5638516.331, 680925.011 5638507.611, 680919.883 5638501.469, 680909.508 5638500.399, 680887.189 5638498.966, 680872.862 5638495.225, 680871.993 5638496.171, 680871.1 5638489.874, 680872.903 5638436.772, 680873.853 5638408.747, 680874.423 5638405.986, 680877.096 5638406.094, 680887.176 5638407.518, 680891.723 5638408.451, 680893.396 5638408.794, 680908.092 5638411.811, 680922.532 5638416.141, 680941.336 5638418.17, 680964.076 5638420.623, 680976.349 5638421.893, 680990.896 5638423.397, 680992.676 5638423.581, 681044.112 5638426.178, 681092.225 5638428.609, 681107.931 5638429.401, 681151.071 5638429.986, 681163.814 5638429.734, 681170.742 5638429.596, 681174.576 5638429.52, 681202.915 5638428.629, 681209.365 5638428.426, 681224.191 5638427.961, 681244.93 5638426.76, 681247.945 5638426.204, 681260.334 5638423.921, 681283.888 5638420.735, 681297.329 5638418.917, 681297.952 5638418.342, 681331.201 5638418.372, 681352.296 5638419.449, 681390.432 5638423.863, 681415.837 5638427.002, 681445.459 5638429.842, 681453.184 5638430.932, 681454.999 5638431.358, 681457.472 5638431.938, 681460.337 5638433.895, 681461.824 5638436.111, 681462.276 5638439.232, 681461.128 5638448.072, 681459.071 5638458.557, 681458.526 5638460.642, 681455.209 5638488.459), (681377.223 5638487.843, 681378.955 5638487.843, 681378.955 5638486.111, 681377.223 5638486.111, 681377.223 5638487.843)))',25832) from dual

- Geometry A is valid with tolerance .000707106781186547524400844362104849039285
- Geometry A has one exterior and one interior ring

Geometry B:
select mdsys.sdo_geometry('POLYGON ((681455.209 5638488.459, 681458.526 5638460.642, 681459.071 5638458.557, 681458.527 5638460.642, 681455.209 5638488.459))',25832) from dual

- Geometry B is valid with tolerance .000707106781186547524400844362104849039285
- Geometry B has one exterior ring

Geometry A and B touch each other with tolerance .000707106781186547524400844362104849039285

Performing sdo_geom.sdo_union of Geometry A with Geometry B with tolerance .000707106781186547524400844362104849039285
- VPA disabled: interior ring of Geometry A still exists in the resulting united geometry -> correct
- VPA enabled: interior ring of Geometry A does not exist in the resulting united geometry -> incorrect

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms