0

Does anyone have special knowledge about Oracle Spatial?

I buffered polygons in Oracle-11 Database by making them slightly smaller (-50cm). The geometries are then delivered via a WFS as GML. With Oracle 11, I get not only simple closed rings as buffered polygons (last pair of coordinates equals first pair of coordinates, 1003: exterior polygon ring ), but also compound polygons made of LineStringSegments and arcs (1005: Compound polygon with some vertices connected by straight line segments and some by circular arcs).

This effect does not occur with Oracle 19 Database, all buffer geometries are simple closed rings (1003).

What do I have to do to achieve this in the Oracle 11 database as well?

5
  • Oracle release naming has at least two numbers, and more typically five, so you've left out quite a few details. It's quite possible that the years between 11g and 19c contained significant development in the topology engine, and it's not possible to get that functionality from the much older release.
    – Vince
    May 11, 2022 at 11:15
  • My request relates to release "11g, Release 2a" respectively release "19c"
    – TommyP
    May 11, 2022 at 15:17
  • You mean you are using an interior polygon (-50cm) ? If so, then yes, the result will not have any circular arcs. Circular arcs only appear when you do a regular buffer (like +50cm). Can you show (visually) the geometry as well as the buffer you got in 11gR2 and the one you got in 19c ? Also if possible, share the geometry of the polygon (the coordinates of the contour ?). May 12, 2022 at 11:52
  • Actually as pointed out in the answer, the buffer function automatically densifies the result, so any circular arc is turned into a set of small straight lines that approximate the arc. BUT: that is only for geodetic shapes (in long/lat). For projected shapes, true arcs are generated. Can you check what SRID your shapes are in ? May 12, 2022 at 11:58
  • Finally, the buffer function has a parameter (arc_tolerance) that can be used to determine the density of the points in the densified arcs. The smaller it is, the more points will be generated, the larger, the fewer points including no densification at all. You say you have buffers of 50cm. By default the arc tolerance is 20 x data tolerance you specify in your function call, so if your data tolerance is 5cm, then the arc tolerance would end up larger than your buffer size. Again, I think we need to see the original shape you are using. May 12, 2022 at 12:04

1 Answer 1

0

By the Oracle Spatial 12c documentation the buffer function creates arcs https://docs.oracle.com/database/121/SPATL/sdo_geom-sdo_buffer.htm#SPATL1111 but you can process the resulting geometry afterwards with SDO_GEOM.SDO_ARC_DENSIFY.

Description

Returns a geometry in which each circular arc in the input geometry is changed into an approximation of the circular arc consisting of straight lines, and each circle is changed into a polygon consisting of a series of straight lines that approximate the circle.

1
  • Ah yes. Good point: "each circle is changed into a polygon consisting of a series of straight lines that approximate the circle.". The buffer function automatically densifies arcs, but only if the geometry is in geodetic coordinates. If it is projected, then arcs are produced. May 12, 2022 at 11:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.