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