2 Replies Latest reply: Jun 6, 2013 7:40 AM by 1013173 RSS

    Oracle Spatial , Nead Help for Simple Query


      I'm a beginner in Oracle Spatial and I have to make a simple query but i have no clue how to do that.

      My problem is :
      I have a table which contains Highways informations.
      A Highway has :
      - an id (VARCHAR2(10)) which is the primary key
      - a geometry (SDO_GEOMETRY) which contains the geographical informations

      The geometry always is

      The SDO_ORDINATE_ARRAY contains a list of "triplets" : the X, Y coordinates in Lambert 93 and the corresponding km (in meters) of the highway.
      The km is always growing. The kms are a subdivisions of the highways.

      I want a simple query that give me the X, Y knowing the id and the km, assuming that if there is not a point which match the proper km, the query must reply a linear interpolation taking the closest point in the geometry.

      Thanks in advance

      PS : excuse me for my bad english.
        • 1. Re: Oracle Spatial , Nead Help for Simple Query
          John O'Toole

          The sdo_gtype of your sample geometry is 3002 which suggests you are storing x, y, z values. i.e. heights in the z.
          Based on your explanation of the data, it sounds like you should be using Linear Referencing - read about it here (
          Note that use of Linear Referencing requires an Oracle Spatial license - Locator is not enough.

          SDO_LRS has a variety of functions/operators which will help you achieve your goal.
          E.g. SDO_LRS.LOCATE_PT

          • 2. Re: Oracle Spatial , Nead Help for Simple Query

            Thanks for the tip.
            I used the LOCATE_PT function with the SDO_UTIL.GETVERTICES function and it works.

            My query is (for hisghway id = '1000' and km = 5000):

            select li.*, t.*
            from HIGHWAYS li , table( sdo_util.getvertices( SDO_LRS.LOCATE_PT( li.geom, 5000 ) )) t
            where li.id = '1000'