Problems with Oracle Spatial and 3D Geometries

Rafael Lucero rafael.lucero at GEOPLANOPUS.CA
Fri Nov 25 07:53:24 PST 2005


Hi All,

  I'm attempting to display an Oracle Spatial layer in Mapserver using
native support (OCI) and while I have been successful with most layers, I am
experiencing problems with a road network.  The road network is three
dimensional (i.e. it has measures) and the geometry of the vast majority of
the elements have an SDO_GTYPE value of 3002 (3D line).  When I display an
extent of the layer that only has geometries of this type, there is
absolutely no problem.

  However, a few of the elements in this layer have an SDO_GTYPE of 3306 (3D
Multiline, measure value is contained on third dimension).  If I try to
display an extent that contains one of these elements, Mapserver displays a
blank map. To test this, I defined the DATA portion of my layer as such:

Blank Map
---------
LAYER
...
  CONNECTIONTYPE oraclespatial
  DATA "SHAPE FROM LOCAL_ROAD_NETWORK USING UNIQUE NE_ID FILTER VERSION 9i"
...
END

Workaround (no Multiline shapes)
--------------------------------
LAYER
...
  CONNECTIONTYPE oraclespatial
  DATA "SHAPE FROM (SELECT c.SHAPE,c.NE_ID FROM LOCAL_ROAD_NETWORK c WHERE
c.SHAPE.GET_LRS_DIM()=0) USING UNIQUE NE_ID FILTER VERSION 9i"
...
END


Since the only shapes in my layer that are Multiline ALSO have an LRS_DIM of
3, the workaround will simply not display any Multiline shapes.  Although
I'm not a C programmer, I had a quick look at maporaclespatial.c and while I
may be completely off, I noticed that osGetOrdinates() function only
supports geometries that have an LRS_DIM of 0 (e.g. 2001, 2002, 2003, 3001,
3002, 3003 etc.).

Has anyone else experienced issues with display 3D Line elements (multiline
or not) with an LRS dimension set to 3 rather than 0?  Is this currently
supported in Mapserver's Oracle Spatial functionality? Thanks, and I look
forward to any help or suggestions anyone might have to offer.

Cheers,

Rafael



More information about the MapServer-users mailing list