[SOLVED] Getting the orientation in degrees of an Oriented Point in Oracle

Issue

This Content is from Stack Overflow. Question asked by Dusan

In my database I have some Oriented Point type geometries.

For example:

{3001,4326,null,{1,1,1,4,1,0},{32.4302549,37.5066298,0,0.16,-0.92,0}}

If I’m correct, my gps coordinates are
lat: 32.4302549, lon: 37.5066298
and the virtual point determining the orientation is a Point(0.16 -0.92 0)

I would like to get the orientation in degrees or radians using a query.

So far I can extract the orientation point:

SELECT SDO_UTIL.GET_COORDINATE(G3E_GEOMETRY, 2) as orientation_vector 
FROM GCOL;

But don’t know how to get the orientation. I know it can be calculated vie arctan2 function, but don’t know the correct oracle syntax.



Solution

You need to use ATAN2 to get radians with the correct quadrant.

WITH X AS (
  SELECT
     SDO_GEOMETRY(3001,4326,NULL,
       SDO_ELEM_INFO_ARRAY(1, 1, 1, 4, 1,0),
       SDO_ORDINATE_ARRAY(32.4302549, 37.5066298, 0, 0.16, - 0.92,0)) AS G
    FROM DUAL
)
SELECT
  ATAN2(
   SDO_UTIL.GET_COORDINATE(G, 2).SDO_POINT.Y , 
   SDO_UTIL.GET_COORDINATE(G, 2).SDO_POINT.X) 
FROM X;

To convert to degrees please see SDO_UTIL.CONVERT_UNIT .


This Question was asked in StackOverflow by Dusan and Answered by David Lapp It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.

people found this article helpful. What about you?