query on oraclespatial using OGR/OCI

Fernando S. simon at INF.UNIVALI.BR
Thu Oct 21 09:30:35 PDT 2004


Hi Pierre,
    The query functions can be possible in the next version of the
Oracle Spatial support. I implemented these functions here in my
computer and I believe that this functions will be include in the next
version of native support.
    I don't know how the OGR implement the query function but this
problem appear when you use functions that use the primary filter like
SDO_FILTER.
   Here the problem disappear when I recreate the indexes without
SDO_LEVEL. Another point is the tolerance, you can try set a  small
value for Tolerance like 0.00001.

----------------------------------------------------------------
Fernando Simon - simon at inf.univali.br
Mapserver and Oracle Spatial developer
G10 - Laboratorio de Computacao Aplicada
http://g10.cttmar.univali.br
----------------------------------------------------------------


bluecarto at free.fr wrote:

>First question : how can you query oracle layers if you don't use OGR ? I mean
>the function are not implemented for oraclespatial connectiontype.
>
>I had already try you suggestion (ommitting the SDO_LEVEL parameter). That could
>be a good idea, but, sadly, it doesn't give any better result.
>
>I'm using Oracle 10g on Debian or Oracle 9.2 on RedHat.
>
>In my sample the result given seem to be the first record in the table.
>
>Regards
>
>Pierre
>
>Selon FERNANDO SIMON <simon at inf.univali.br>:
>
>
>
>>Hi Pierre,
>>    I don't use OGR but your problem can be with the spatial index. I saw
>>this
>>problem with the 10G version.
>>    In the 10G version the Oracle don't recommend use SDO_LEVEL when you
>>create
>>the spatial index. In my tests problems appears when I set the SDO_LEVEL, the
>>result doesn't correspond whant I expected.
>>    I don't know if the problem occur with others Oracle Spatial versions.
>>But
>>you can try  with or without SDO_LEVEL.
>>
>>
>>----------------------------------------------------------------
>>Fernando Simon - simon at inf.univali.br
>>Mapserver and Oracle Spatial developer
>>G10 - Laboratorio de Computacao Aplicada
>>http://g10.cttmar.univali.br
>>----------------------------------------------------------------
>>
>>
>>Quoting Pierre GIRAUD <bluecarto at FREE.FR>:
>>
>>
>>
>>> I'm still having difficulties to use mapserver queries on a oracle layer.
>>> Before I report a bug, I would like someone to test the following SQL
>>>statement
>>>and mapfile, and agree that something is going wrong, or tell me I am
>>>missing
>>>something obvious.
>>>
>>> Thx
>>>
>>> Pierre GIRAUD
>>> camptocamp.com
>>>
>>>---------SQL statement--------------
>>>DROP table mytable;
>>>
>>>CREATE TABLE MYTABLE (
>>>  GID VARCHAR(20),
>>>  geometry MDSYS.SDO_GEOMETRY);
>>>
>>>
>>>
>>>insert into MYTABLE (GID,GEOMETRY) values (
>>>  '1',
>>>  mdsys.sdo_geometry(
>>>    '2003',
>>>    null,
>>>    null,
>>>    mdsys.sdo_elem_info_array(1,1003,1),
>>>    mdsys.sdo_ordinate_array(1,1, 1,4, 4,4, 4,1, 1,1))
>>>);
>>>
>>>insert into MYTABLE (GID,GEOMETRY) values (
>>>  '2',
>>>  mdsys.sdo_geometry(
>>>    '2003',
>>>    null,
>>>    null,
>>>    mdsys.sdo_elem_info_array(1,1003,1),
>>>    mdsys.sdo_ordinate_array(6,1, 6,4, 9,4, 9,1, 6,1))
>>>);
>>>
>>>insert into MYTABLE (GID,GEOMETRY) values (
>>>  '3',
>>>  mdsys.sdo_geometry(
>>>    '2003',
>>>    null,
>>>    null,
>>>    mdsys.sdo_elem_info_array(1,1003,1),
>>>    mdsys.sdo_ordinate_array(1,6, 1,9, 9,9, 9,6, 1,6))
>>>);
>>>
>>>delete from user_sdo_geom_metadata where table_name like 'MYTABLE';
>>>
>>>insert into user_sdo_geom_metadata (table_name,column_name,diminfo,srid)
>>>values ('MYTABLE','GEOMETRY',
>>>mdsys.SDO_DIM_ARRAY(mdsys.SDO_DIM_ELEMENT('X', 0, 10, 0.1),
>>>mdsys.SDO_DIM_ELEMENT('Y', 0, 10, 0.1)),
>>>NULL);
>>>
>>>drop index q_mytable;
>>>
>>>create index Q_MYTABLE on MYTABLE(GEOMETRY) indextype is
>>>MDSYS.spatial_index
>>>parameters ('SDO_LEVEL=6');
>>>
>>>---------mapfile---------------
>>>NAME DEMO
>>>STATUS ON
>>>SIZE 500 300
>>>EXTENT 0 0 10 10
>>>IMAGECOLOR 255 255 255
>>>
>>>
>>>WEB
>>>  IMAGEPATH "/var/www/images/"
>>>  IMAGEURL "images/"
>>>END
>>>
>>>LAYER
>>>  NAME squares
>>>  TYPE POLYGON
>>>  STATUS ON
>>>#  CONNECTIONTYPE oraclespatial
>>>#  CONNECTION "scott/tiger at orcl"
>>>  CONNECTION "OCI:scott/tiger at orcl"
>>>  CONNECTIONTYPE OGR
>>>#  DATA "select * from mytable"
>>>  DATA "mytable"
>>>  TEMPLATE "ttt"
>>>  CLASS
>>>   SIZE 10
>>>   COLOR 255 255 255
>>>   OUTLINECOLOR 200 200 200
>>>  END
>>>END
>>>
>>>END
>>>
>>>
>>>
>>>Selon bluecarto at free.fr:
>>>
>>>
>>>
>>>> Hello,
>>>>
>>>>Following the good advices of Frank Warmerdam, I improve in using oracle
>>>>spatial
>>>>data with spatial indexes. For now, I know that I should not use sql
>>>>statements
>>>>in the mapfile but queries directly to the table :
>>>>
>>>>  DATA "my_table"
>>>>instead of
>>>>  DATA "select * from my_table"
>>>>
>>>>Both return the same images. Shapes are well drawn, and labeling is
>>>>
>>>>
>>>correct.
>>>
>>>
>>>>But the first (more performant) statement doesn't give good results to a
>>>>query.
>>>>The data returned doesn't correspond to what is expected. And no shape is
>>>>highlighted.
>>>>
>>>>Do someone using Oracle have same problems ?
>>>>
>>>>Pierre GIRAUD
>>>>camptocamp.com
>>>>
>>>>
>>>>
>>>>
>>
>>
>>------------------------------------------------
>>Este e-mail foi enviado pelo webmail do curso de
>>       Ciência da Computação - UNIVALI
>>
>>
>>
>
>
>
>



More information about the MapServer-users mailing list