Antwort: Re: [mapserver-dev] Point layers with Oracle driver

umn-ms at hydrotec.de umn-ms at hydrotec.de
Thu Feb 14 04:27:56 EST 2008


Hi

I think Daniel asked, how Mapserver-users could deal with this issue in 
the case, they have
no direct influence on the way points are represented in the 
oracle-database.

Maybe this is a workaround:
...
DATA "GEOMETRY FROM (SELECT MDSYS.SDO_GEOM.SDO_CENTROID(shape) 
geometry,... FROM MYTABLE  ) ...."
...

I didn't test it with mapserver. But the following SQL-statement delivers 
"544347.756":
SELECT  MDSYS.SDO_GEOM.SDO_CENTROID(
                                       SDO_GEOMETRY(2001, 82247, NULL, 
    SDO_ELEM_INFO_ARRAY(1, 1, 1), 
    SDO_ORDINATE_ARRAY(544347.756, 4350295.7)),
                                       0.05).sdo_point.x
FROM DUAL;

It seems, that MDSYS.SDO_GEOM.SDO_CENTROID converts the way a point is 
represented.

Bye
benedikt Rothe


mapserver-dev-bounces at lists.osgeo.org schrieb am 13.02.2008 03:18:12:

> Fernando,
> 
>     Good suggestion.
> 
> SQL> select * from tt;
> 
> GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, 
SDO_ORDINATES)
> 
--------------------------------------------------------------------------------
> SDO_GEOMETRY(2001, 82247, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), 
> SDO_ORDINATE_ARRAY
> (544347.756, 4350295.7))
> 
> SQL> select sdo_geom.validate_geometry_with_context(geom, 0.000005) from 
tt;
> 
> SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(GEOM,0.000005)
> 
--------------------------------------------------------------------------------
> TRUE
> 
>     This one geometry in a large table in which the point geometry 
> representations vary between SDO_POINT and SDO_ORDINATES.  The original 
> data stored its ordinates in SDO_POINT, but a frontend app inserts new 
> geometries with ordinates in SDO_ORDINATES.  The app developers 
> construct Oracle JGeometry objects in java, then insert then using JDBC. 

>   Obviously the process is pretty lax since the data is inserted as 
> SDO_ORDINATES, and yet rendered identically by Oracle MapViewer.
> 
>     Here's some information on their oriented point extension: 
> http://download-west.oracle.com/docs/cd/B19306_01/appdev.
> 102/b14255/sdo_objrelschema.htm#CBBIGEFH
> 
> Thanks,
> 
> Dave
> 
> 
> Fernando Simon wrote:
> > Hi Daniel and David,
> >     Well, about the SDO_POINT. The Mapserver driver just read the 
point
> > data from SDO_POINT, from the Oracle Spatial manual (page 2.2, for 
point
> > example and figure 2-6): "SDO_ELEM_INFO and SDO_ORDINATES are both 
NULL,
> > as required if the SDO_POINT attribute is specified." And the 
SDO_POINT
> > topic in the manual hint that you can just store points using the
> > SDO_POINT attribute.
> >     Maybe you can force the use of the
> > SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT function to verify if the
> > geometry is valid, if it returns true and Mapserver can't draw, we 
have
> > a bug :).
> >     David, about the kind of the point that you wrote, the Mapserver
> > can't draw it. I never head about it, I will read about it and other
> > things for release 11 to check new features. Now a question for core
> > developers, if I read angle data from database (like David wrote about
> > the point) can I set the angle attribute for the layer? Will work, the
> > angle?
> >     We can check about this special kind of data, but I believe that
> > Mapserver just need to draw the data/kinds/types defined in the 2-2
> > table for SDO_ELEM_INFO.
> >     Daniel, in my opinion the data that you report was wrong. You can
> > write in the Oracle forum (in the OTN page) about it, the developers 
of
> > the Oracle Spatial read and reply there.
> >     Best regards.
> > 
> > Fernando Simon
> > 
> > David Fuhry wrote:
> >> Daniel,
> >>
> >> Point ordinates wouldn't ever be in SDO_ELEM_INFO; it only stores
> >> metadata for how to interpret SDO_ORDINATES.
> >>
> >> I'm not sure what MapServer does, but Oracle MapViewer will render a
> >> point if the ordinates are stored in either the SDO_POINT or the
> >> SDO_ORDINATES substructure of SDO_GEOMETRY.
> >>
> >> Notably, 10g+ has a feature known as "oriented points", in which
> >> SDO_POINT is null, and the (x,y[,z]) point ordinates are stored in
> >> SDO_ORDINATES, and are followed by values (still in SDO_ORDINATES) 
which
> >> describe an angle, for obvious use in labeling.
> >>
> >> The correct behavior would be for MapServer to render the point at 
the
> >> location stored in SDO_ORDINATES iff the SDO_POINT is null.
> >>
> >> Thanks,
> >>
> >> Dave
> >>
> >>
> >> Daniel Morissette wrote:
> >>> Fernando,
> >>>
> >>> I've had someone report to me that when MapServer reads point layers
> >>> from Oracle, it works fine if the coordinates are stored in the
> >>> SDO_POINT, but it doesn't work if they are stored in SDO_ELEM_INFO 
or
> >>> SDO_ORDINATES which are apparently two other valid ways of storing
> >>> point data.
> >>>
> >>> Are you aware of this issue? Is there a way around it or do you have
> >>> any advice to provide to users who run into this problem?
> >>>
> >>> Thanks
> >>>
> >>> Daniel
> >> _______________________________________________
> >> mapserver-dev mailing list
> >> mapserver-dev at lists.osgeo.org
> >> http://lists.osgeo.org/mailman/listinfo/mapserver-dev
> >>
> _______________________________________________
> mapserver-dev mailing list
> mapserver-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-dev/attachments/20080214/6f22376a/attachment.html


More information about the mapserver-dev mailing list