Home » Server Options » Spatial » SDO Geometry Query (Oracle SQL Developer 3.0.04)
SDO Geometry Query [message #553611] |
Mon, 07 May 2012 04:21 |
boba
Messages: 6 Registered: May 2012
|
Junior Member |
|
|
Hi there
Is there a special Add-in for SDO Queries in Oracle SQL Developer? The reason why I ask:
When I enter this query into the Worksheet:
SELECT l.nummer, SDO_GEOM.SDO_LENGTH(l.geometrie, 0.005) FROM tableL l
i get:
NUMMER SDO_GEOM.SDO_AREA(L.GEOMETRIE,0.005)
--------- ------------------------------------
777
The tableL has a valid SDO Geometry. My co-worker is using the same SQL Developer Version, the same database and the same DB-User and gets a result for SDO_GEOM.SDO_AREA. Do I have to enable a function?
This is the l.geometrie (X and Y are numeric):
MDSYS.SDO_GEOMETRY(3003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1005,1,1,2,1),MDSYS.SDO_ORDINATE_ARRAY(X1,Y1,0,X2,Y2,0,X3,Y3,0...))
Thank you for your help
Barbara
|
|
|
|
Re: SDO Geometry Query [message #553739 is a reply to message #553611] |
Tue, 08 May 2012 04:17 |
boba
Messages: 6 Registered: May 2012
|
Junior Member |
|
|
I get the same output in SQL*Plus:
NUMMER SDO_GEOM.SDO_LENGTH(L.GEOMETRIE,0.005)
----------- ---------------------------------------
777
I also executed the query in SQLPlus Worksheet. It's always the same output. I also tried other SDO Queries bu none of them worked.
|
|
|
|
Re: SDO Geometry Query [message #553742 is a reply to message #553741] |
Tue, 08 May 2012 04:36 |
|
Barbara Boehmer
Messages: 9102 Registered: November 2002 Location: California, USA
|
Senior Member |
|
|
Can you provide a complete reproducible test case or test the one that I have provided below? We need to see a copy and paste of a complete run from SQL*Plus with line numbers and results, as in the execution I have posted below. I provided the script for you to copy and paste and the execution separately. Make sure that you either run it in a separate schema from your actual data or change the table name.
-- test script:
CREATE TABLE tableL
(nummer NUMBER,
geometrie SDO_GEOMETRY)
/
INSERT INTO tableL VALUES
(777,
SDO_GEOMETRY
(3003, NULL, NULL,
SDO_ELEM_INFO_ARRAY (1, 1005, 1, 1, 2, 1),
SDO_ORDINATE_ARRAY (1, 1, 0, 2, 2, 0, 3, 3, 0)))
/
SELECT l.nummer, SDO_GEOM.SDO_LENGTH(l.geometrie, 0.005) FROM tableL l
/
-- execution of test script:
SCOTT@orcl_11gR2> CREATE TABLE tableL
2 (nummer NUMBER,
3 geometrie SDO_GEOMETRY)
4 /
Table created.
SCOTT@orcl_11gR2> INSERT INTO tableL VALUES
2 (777,
3 SDO_GEOMETRY
4 (3003, NULL, NULL,
5 SDO_ELEM_INFO_ARRAY (1, 1005, 1, 1, 2, 1),
6 SDO_ORDINATE_ARRAY (1, 1, 0, 2, 2, 0, 3, 3, 0)))
7 /
1 row created.
SCOTT@orcl_11gR2> SELECT l.nummer, SDO_GEOM.SDO_LENGTH(l.geometrie, 0.005) FROM tableL l
2 /
NUMMER SDO_GEOM.SDO_LENGTH(L.GEOMETRIE,0.005)
---------- --------------------------------------
777 2.82842712
1 row selected.
|
|
|
Re: SDO Geometry Query [message #553743 is a reply to message #553742] |
Tue, 08 May 2012 04:55 |
boba
Messages: 6 Registered: May 2012
|
Junior Member |
|
|
I executed your code step by step here's the output from SQL*Plus (Release 10.2.0.4.0) (The DB is Oracle 11g)
SQL> CREATE TABLE tableL
2 (nummer NUMBER,
3 geometrie SDO_GEOMETRY)
4 ;
Tabelle wurde erstellt. (Table created)
SQL> INSERT INTO tableL VALUES
2 (777,
3 SDO_GEOMETRY
4 (3003, NULL, NULL,
5 SDO_ELEM_INFO_ARRAY (1, 1005, 1, 1, 2, 1),
6 SDO_ORDINATE_ARRAY (1, 1, 0, 2, 2, 0, 3, 3, 0)))
7 ;
1 Zeile wurde erstellt. (1 row created)
SQL> SELECT l.nummer, SDO_GEOM.SDO_LENGTH(l.geometrie, 0.005) FROM tableL l;
NUMMER SDO_GEOM.SDO_LENGTH(L.GEOMETRIE,0.005)
---------- --------------------------------------
777
SQL> select * from tableL;
NUMMER
----------
GEOMETRIE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
--------------------------------------------------------------------------------
777
SDO_GEOMETRY(3003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1005, 1, 1, 2, 1), SDO_ORD
INATE_ARRAY(1, 1, 0, 2, 2, 0, 3, 3, 0))
I appreciate your help because i have absolutely no idea why it doesn't work.
|
|
|
|
Re: SDO Geometry Query [message #553748 is a reply to message #553743] |
Tue, 08 May 2012 05:13 |
_jum
Messages: 577 Registered: February 2008
|
Senior Member |
|
|
I can confirm your problem in ORACLE 11.2.0.2.0
SET NULL NULL
SELECT SDO_GEOM.SDO_LENGTH(
SDO_GEOMETRY(3003, NULL, NULL,
SDO_ELEM_INFO_ARRAY (1, 1005, 1, 1, 2, 1),
SDO_ORDINATE_ARRAY (1, 1, 0, 2, 2, 0, 3, 3, 0))
, 0.005) l3d FROM dual;
L3D
----------
NULL
1 row selected.
It works fine in ORACLE 10.2.0.4.0
SELECT SDO_GEOM.SDO_LENGTH(
SDO_GEOMETRY(3003, NULL, NULL,
SDO_ELEM_INFO_ARRAY (1, 1005, 1, 1, 2, 1),
SDO_ORDINATE_ARRAY (1, 1, 0, 2, 2, 0, 3, 3, 0))
, 0.005) l3d FROM dual;
L3D
----------
2,82842712
1 row selected
[Updated on: Tue, 08 May 2012 05:16] Report message to a moderator
|
|
|
|
Re: SDO Geometry Query [message #553753 is a reply to message #553749] |
Tue, 08 May 2012 05:44 |
_jum
Messages: 577 Registered: February 2008
|
Senior Member |
|
|
It depends of the SRID, if SRID is NULL (or coordinate system is PROJECTED !?) you can't calculate 3D-length in 11.2.0.2.0:
--11.2.0.2.0
SET NULL NULL
SELECT SDO_GEOM.SDO_LENGTH(
SDO_GEOMETRY(3002, NULL , NULL,
SDO_ELEM_INFO_ARRAY (1, 2, 1),
SDO_ORDINATE_ARRAY (0, 0, 0, 1, 1, 1))
, 0.005) l3d FROM dual;
L3D
----------
NULL
1 row selected.
SELECT SDO_GEOM.SDO_LENGTH(
SDO_GEOMETRY(3002, 2 , NULL,
SDO_ELEM_INFO_ARRAY (1, 2, 1),
SDO_ORDINATE_ARRAY (0, 0, 0, 1, 1, 1))
, 0.005,NULL, NULL) l3d FROM dual;
L3D
----------
,024682056
1 row selected.
--10.2.0.4.0
SET NULL NULL
SELECT SDO_GEOM.SDO_LENGTH(
SDO_GEOMETRY(3002, NULL , NULL,
SDO_ELEM_INFO_ARRAY (1, 2, 1),
SDO_ORDINATE_ARRAY (0, 0, 0, 1, 1, 1))
, 0.005) l3d FROM dual;
L3D
----------
1,41421356
1 row selected.
SELECT SDO_GEOM.SDO_LENGTH(
SDO_GEOMETRY(3002, 2 , NULL,
SDO_ELEM_INFO_ARRAY (1, 2, 1),
SDO_ORDINATE_ARRAY (0, 0, 0, 1, 1, 1))
, 0.005,NULL) l3d FROM dual;
L3D
----------
,024682056
1 row selected.
But the value 1,41421356 is incorrect - only 2D calculation from (0,0,0) to (1,1,0)
|
|
|
Re: SDO Geometry Query [message #553754 is a reply to message #553749] |
Tue, 08 May 2012 05:46 |
boba
Messages: 6 Registered: May 2012
|
Junior Member |
|
|
I used the original query. But think that this shouldn't matter. The empty Space is a NULL value:
NUMMER SDO_GEOM.SDO_LENGTH(L.GEOMETRIE,0.005)
------------ --------------------------------------
777 NULL
I'll ask my co-worker about the Oracle version and check if we really have the same version.
|
|
|
Re: SDO Geometry Query [message #553782 is a reply to message #553754] |
Tue, 08 May 2012 08:50 |
boba
Messages: 6 Registered: May 2012
|
Junior Member |
|
|
Well was a stupid idea. of course is the DB version the same when we use the same DB.
C:\Oracle\Ora102\sqlplus
Does anybody knows something about the important files in this folder... The path sounds important for my problem...
|
|
|
Re: SDO Geometry Query [message #553833 is a reply to message #553782] |
Tue, 08 May 2012 12:54 |
|
Barbara Boehmer
Messages: 9102 Registered: November 2002 Location: California, USA
|
Senior Member |
|
|
Please verify that the problem is only when there is a null srid, as jum suspects, by running the two queries that he provided below from SQL*Plus, and seeing if you get a null value for the first, but not for the second.
SET NULL NULL
SELECT SDO_GEOM.SDO_LENGTH(
SDO_GEOMETRY(3002, NULL , NULL,
SDO_ELEM_INFO_ARRAY (1, 2, 1),
SDO_ORDINATE_ARRAY (0, 0, 0, 1, 1, 1))
, 0.005) l3d FROM dual;
SELECT SDO_GEOM.SDO_LENGTH(
SDO_GEOMETRY(3002, 2 , NULL,
SDO_ELEM_INFO_ARRAY (1, 2, 1),
SDO_ORDINATE_ARRAY (0, 0, 0, 1, 1, 1))
, 0.005,NULL, NULL) l3d FROM dual;
|
|
|
Re: SDO Geometry Query [message #553869 is a reply to message #553833] |
Wed, 09 May 2012 00:36 |
boba
Messages: 6 Registered: May 2012
|
Junior Member |
|
|
I can verify it. But should't it be possible to run a spatial query without a coordinate-system? why can my co-worker run the absolutely same query for the same DB-User on his computer? Does this mean that I have to do an update first or get a substr with some instr and replaces?
SQL> SET NULL NULL;
SQL> SELECT SDO_GEOM.SDO_LENGTH(
2 SDO_GEOMETRY(3002, NULL , NULL,
3 SDO_ELEM_INFO_ARRAY (1, 2, 1),
4 SDO_ORDINATE_ARRAY (0, 0, 0, 1, 1, 1))
5 , 0.005) l3d FROM dual;
L3D
----------
NULL
SQL> SELECT SDO_GEOM.SDO_LENGTH(
2 SDO_GEOMETRY(3002, 2 , NULL,
3 SDO_ELEM_INFO_ARRAY (1, 2, 1),
4 SDO_ORDINATE_ARRAY (0, 0, 0, 1, 1, 1))
5 , 0.005,NULL, NULL) l3d FROM dual;
L3D
----------
.024682056
Yes and the coordinatesystem is a projected one (SRID 21781). All the z-values in my geometry are zero.
[Updated on: Wed, 09 May 2012 00:41] Report message to a moderator
|
|
|
Goto Forum:
Current Time: Thu Jan 23 23:32:43 CST 2025
|