Topic: To construct the buffer to a point

Hello!
Prompt how to make 30 centimetric buffer of a point please? Already and the documentation read all the same I can not understand these coefficients.

``sdo_buffer (/* point geometry */, 0.02, 0.3)``

Re: To construct the buffer to a point

And generally I want to understand as to work with Relate. In an example operation with one object of an exact layer is implemented. Simply one object a starting point, and the second buffer from a starting point. I do not understand why it is returned FALSE

``````WITH BUFF AS (select / * + ALL_ROWS */
T.Id;
m.sdo_diminfo;
mdsys.sdo_geom.sdo_buffer (T.gdo_geometry, m.sdo_diminfo, 0.3, ' unit=meter ') gdo_geometry
from geo. TEST T, mdsys. SDO_GEOM_METADATA_TABLE m
where T.Id = 100
and m.sdo_table_name = ' TEST'
and m.sdo_owner = ' GEO ')
SELECT BUFF.Id
,(select mdsys.sdo_geom.relate (BUFF.gdo_geometry, BUFF.sdo_diminfo, ' mask=contains', C.gdo_geometry, BUFF.sdo_diminfo) from geo. TEST A C where C.Id = BUFF.Id) R01
FROM BUFF``````

Re: To construct the buffer to a point

Nechto;
And that returns if in request to substitute

``(select mdsys.sdo_geom.relate (BUFF.gdo_geometry, BUFF.sdo_diminfo, ' mask=DETERMINE ', C.geometry2, BUFF.sdo_diminfo)``

Re: To construct the buffer to a point

Nechto wrote:

Simply one object a starting point, and the second buffer from a starting point. I do not understand why it is returned FALSE

I can not precisely tell, but what at you in diminfo - whether the point in boundaries lies and whether exceeds accuracy yours of 0.3 meters?

Re: To construct the buffer to a point

IgorSm wrote:

Nechto;
And that returns if in request to substitute

``(select mdsys.sdo_geom.relate (BUFF.gdo_geometry, BUFF.sdo_diminfo, ' mask=DETERMINE ', C.geometry2, BUFF.sdo_diminfo)``

Delivered ' mask=DETERMINE ' , returned ' DISJOINT '

Arsenyev wrote:

I can not Precisely tell, but what at you in diminfo - whether the point in boundaries lies and whether exceeds accuracy yours of 0.3 meters?

In DIMINFO at me the following

``````sdo_dimname sdo_lb sdo_ub sdo_tolerance
X 0 180 0.05
Y 0 90 0.05``````

Re: To construct the buffer to a point

Something tolerance for degrees too big.

Re: To construct the buffer to a point

Alexander Ryndin wrote:

Something tolerance for degrees too big.

+1
Well as one would expect...
Or boundaries for meters small, or 0.05 degrees it is small for 0.3 meters

Re: To construct the buffer to a point

, with the degree system for a long time no affairs had.
But thought that  it is underlined in in meters
https://docs.oracle.com/cd/B28359_01/ap … m#SPATL450
For geodetic data (such as data identified by longitude and latitude coordinates), the tolerance value is a number of meters. For example, a tolerance value of 100 indicates a tolerance of 100 meters. The tolerance value for geodetic data should not be smaller than 0.05 (5 centimeters), and in most cases it should be larger. Spatial uses 0.05 as the tolerance value for geodetic data if you specify a smaller value with the following functions: SDO_GEOM.RELATE, SDO_GEOM.SDO_DIFFERENCE, SDO_GEOM.SDO_INTERSECTION, SDO_GEOM.SDO_UNION, and SDO_GEOM.SDO_XOR; for other functions, Spatial uses the smaller tolerance value that you specify.

Re: To construct the buffer to a point

And for sdo_buffer at usage of degrees (geodetic data) it is recommended to specify arc_tolerance.
Citations
For example: ' unit=km arc_tolerance=0.05'
If the input geometry is geodetic data, this parameter is required, and arc_tolerance must be specified.
...
If the input geometry is geodetic data and if arc_tolerance is not specified, the default value is the tolerance value multiplied by 20
https://docs.oracle.com/database/121/SP … #SPATL1111

Re: To construct the buffer to a point

Arsenyev wrote:

it is passed...
+1
Well as one would expect...
Or boundaries for meters small, or 0.05 degrees it is small for 0.3 meters

Prompt please, what it is necessary to substitute that the result appeared? And that I not absolutely understand this accuracy in degrees.

Re: To construct the buffer to a point

Nechto wrote:

Prompt please, what it is necessary to substitute that the result appeared? And that I not absolutely understand this accuracy in degrees.

And that returns

``````BUFF.Id
,(select mdsys.sdo_geom.relate (BUFF.gdo_geometry, ' mask=contains', C.gdo_geometry, 1e-8) from geo. TEST A C where C.Id = BUFF.Id) R01``````

?

Re: To construct the buffer to a point

Arsenyev wrote:

it is passed...
And that returns

``````BUFF.Id
,(select mdsys.sdo_geom.relate (BUFF.gdo_geometry, ' mask=contains', C.gdo_geometry, 1e-8) from geo. TEST A C where C.Id = BUFF.Id) R01``````

?

FALSE

Re: To construct the buffer to a point

Nechto;
And geometries you can result?
BUFF.gdo_geometry
And
C.gdo_geometry
In a type mdsys.sdo_geometry (...)

Re: To construct the buffer to a point

+1
Example

``````WITH BUFF AS (select / * + ALL_ROWS */
SDO_GEOMETRY (2001, 8307, NULL, SDO_ELEM_INFO_ARRAY (1, 1, 1), SDO_ORDINATE_ARRAY (34.73333333, 43.93333333)) AS geom;
mdsys.sdo_geom.sdo_buffer (SDO_GEOMETRY (2001, 8307, NULL, SDO_ELEM_INFO_ARRAY (1, 1, 1), SDO_ORDINATE_ARRAY (34.73333333, 43.93333333)), 0.3, 0.05, ' unit=meter ') BF
FROM dual)
select (mdsys.sdo_geom.relate (BF, ' mask=contains', geom, 0.05)) FF
from buff``````

By the way, it is returned

Re: To construct the buffer to a point

IgorSm;
So under the documentation:

wrote:

The SDO_GEOM.RELATE function can return the following types of answers:
If you pass a mask listing one or more relationships, the function returns the specified mask value if one or more of the relationships are true for the pair of geometries. If all relationships are false, the procedure returns FALSE.

Re: To construct the buffer to a point

Sergey Arsenyev;
Yes I about what not FALSE returned)