Home » Server Options » Spatial » how to put the Lan Long in a variable (11)
how to put the Lan Long in a variable [message #614722] |
Mon, 26 May 2014 09:35 ![Go to next message Go to next message](/forum/theme/orafaq/images/down.png) |
![](http://www.gravatar.com/avatar/7b1607fc84ccc2cbabdca13be3090cfb?s=64&d=mm&r=g) |
abbasgol
Messages: 3 Registered: January 2013
|
Junior Member |
|
|
Hello World ,
Declare
dd SDO_GEOMETRY:=50.39703369140625,26.172694044887898,50.39531707763672,26.16807213199397,50.39154052734375,26.16591517661071;
tg_1 SDO_GEOMETRY := SDO_GEOMETRY (2007,
8307,
sdo_point_type (NULL, NULL, NULL),
sdo_elem_info_array (1,
1003,
1,
51,
1003,
1
),
sdo_ordinate_array ( dd )
is there a way to pass the coordinates to variable the put it inside the sdo_ordinate_array , the above not working put when i put the coordinates directly it works
|
|
|
Re: how to put the Lan Long in a variable [message #614770 is a reply to message #614722] |
Tue, 27 May 2014 01:51 ![Go to previous message Go to previous message](/forum/theme/orafaq/images/up.png) ![Go to next message Go to next message](/forum/theme/orafaq/images/down.png) |
![](http://www.orafaq.com/forum/images/custom_avatars/43710.gif) |
Barbara Boehmer
Messages: 9097 Registered: November 2002 Location: California, USA
|
Senior Member |
|
|
It helps to know where the coordinates are coming from. In the following example, the coordinates come from a table.
SCOTT@orcl12c> CREATE TABLE coordinate_tab
2 (coordinates NUMBER)
3 /
Table created.
SCOTT@orcl12c> INSERT ALL
2 INTO coordinate_tab (coordinates) VALUES (50.39703369140625)
3 INTO coordinate_tab (coordinates) VALUES (26.172694044887898)
4 INTO coordinate_tab (coordinates) VALUES (50.39531707763672)
5 INTO coordinate_tab (coordinates) VALUES (26.16807213199397)
6 INTO coordinate_tab (coordinates) VALUES (50.39154052734375)
7 INTO coordinate_tab (coordinates) VALUES (26.16591517661071)
8 SELECT * FROM DUAL
9 /
6 rows created.
SCOTT@orcl12c> SELECT * FROM coordinate_tab
2 /
COORDINATES
-----------
50.3970337
26.172694
50.3953171
26.1680721
50.3915405
26.1659152
6 rows selected.
SCOTT@orcl12c> CREATE TABLE geom_tab
2 (geom SDO_GEOMETRY)
3 /
Table created.
SCOTT@orcl12c> DECLARE
2 dd SDO_ORDINATE_ARRAY;
3 tg_1 SDO_GEOMETRY;
4 BEGIN
5 SELECT CAST (COLLECT (coordinates) AS SDO_ORDINATE_ARRAY) INTO dd FROM coordinate_tab;
6 tg_1 :=
7 SDO_GEOMETRY
8 (2007, 8307,
9 SDO_POINT_TYPE (NULL, NULL, NULL),
10 SDO_ELEM_INFO_ARRAY (1, 1003, 1, 51, 1003, 1),
11 dd);
12 INSERT INTO geom_tab (geom) VALUES (tg_1);
13 END;
14 /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> SELECT * FROM geom_tab
2 /
GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
--------------------------------------------------------------------------------
SDO_GEOMETRY(2007, 8307, SDO_POINT_TYPE(NULL, NULL, NULL), SDO_ELEM_INFO_ARRAY(1
, 1003, 1, 51, 1003, 1), SDO_ORDINATE_ARRAY(50.3970337, 26.172694, 50.3953171, 2
6.1680721, 50.3915405, 26.1659152))
1 row selected.
|
|
|
Re: how to put the Lan Long in a variable [message #614892 is a reply to message #614722] |
Wed, 28 May 2014 06:41 ![Go to previous message Go to previous message](/forum/theme/orafaq/images/up.png) |
_jum
Messages: 577 Registered: February 2008
|
Senior Member |
|
|
You could do it this way too:
SET SERVEROUTPUT ON SIZE 900000;
DECLARE
dd SDO_ORDINATE_ARRAY := SDO_ORDINATE_ARRAY (50.39703369140625,26.172694044887898, 50.39531707763672,26.16807213199397, 50.39154052734375,26.16591517661071);
tg_1 SDO_GEOMETRY := SDO_GEOMETRY
(2007, 8307, NULL, SDO_ELEM_INFO_ARRAY (1, 1003, 1, 51, 1003, 1), dd);
BEGIN
dbms_output.put_line (SDO_GEOM.VALIDATE_GEOMETRY(tg_1,0.001));
END;
13034
PL/SQL procedure successfully completed.
But the SDO_GEOMETRY is invalid !
13034 - Invalid data in the SDO_ORDINATE_ARRAY in SDO_GEOMETRY object
Have a look at the documentation.
[Updated on: Wed, 28 May 2014 06:50] Report message to a moderator
|
|
|
Goto Forum:
Current Time: Sat Sep 07 18:34:54 CDT 2024
|