Hello Oracle Spatial community and development team,
I’m working on 3D modeling of building units (e.g., apartments) in Oracle Spatial and have encountered a few challenges I’d like to raise here. I appreciate any insight or suggestions you can offer.
Scenario
I have two solid bodies with sloped roofs, stacked one on top of the other without any volumetric interference – they touch exactly along the sloped roof surface.
- I start with a 2D polygon in WKT format, assigned to geographic SRID 8307 (WGS 84, 2D).
- I build a 3D geometry using SDO_GEOMETRY, then apply SDO_UTIL.EXTRUDE to give each vertex a base and top height.
- The result is two solid geometries in SRID 4979 (WGS 84, 3D geodetic) that are adjacent along the sloping roof faces.
Challenges and Questions
- Extracting the Intersection Geometry of Two Solids
According to the documentation, spatial operators like SDO_ANYINTERACT, SDO_INSIDE, and SDO_FILTER work on 3D geometries but only return Boolean results (TRUE/FALSE). When I need the actual intersection geometry (a new solid representing the overlapping volume), functions like SDO_GEOM.SDO_INTERSECTION do not support 3D geometries. Even in the latest 23ai release, this capability appears to be missing.
Is there any workaround to obtain the volumetric intersection of two solids? For example, a combination of functions, conversion to a different format, or an indirect approach using SDO_GEOM.SDO_VOLUME?
- Volume Calculation on Geodetic Data
The SDO_GEOM.SDO_VOLUME function does not work on geometries with a geodetic SRID (like 4979).
What is the reason for this limitation?
And more importantly: can I transform on the fly using SDO_CS.TRANSFORM to a suitable projected coordinate system (e.g., a local UTM zone), compute the volume there, and trust the result? If so, are there any accuracy considerations to keep in mind?
- Touch Detection Without Volumetric Overlap
Two apartments should be considered valid only if they touch each other (along a face, edge, or vertex) but do not overlap volumetrically (no interior intersection).
Given the limitations of Boolean operators:
- How can I reliably confirm absence of volumetric overlap?
- Is a combination of SDO_ANYINTERACT with SDO_GEOM.RELATE and a 3D mask like 'TOUCH' or 'OVERLAPBDYDISJOINT' a viable solution?
- If two solids share a common face, how can I distinguish that from a mere edge or vertex contact?
What is your recommended approach to validate a “touch” condition with zero volumetric interference?
Technical Environment
- Oracle Database: 26Ai
- SRIDs: 8307 (2D footprint) → 4979 (3D geodetic solids)
- Geometry type: SDO_GEOMETRY with appropriate SDO_GTYPE for solids
If you have any experience, workarounds, or even early ideas, I’d be glad to hear them.
Also, if the Oracle Spatial development team has plans to introduce native Solid Intersection and full geodetic volume support in future releases, I’d appreciate any information you can share.
Thank you very much!