Příklady použití prostorových operátorů

From Wikivyuka
Revision as of 19:37, 25 April 2011 by Dur30 (talk | contribs)

Jump to: navigation, search

Použití metod objektu SDO_GEOMETRY:

Metody vrací informace o prostorových objektech uložených v databázi. POZOR - někdy fungují pouze v "ostré" verzi se Spatial Modulem, Locator nestačí.

SELECT c.name, c.shape.Get_Dims() {vrací dimenzi geoobjektu, lze zaměnit s metodou ST_CoordDim, obě vrací stejné výsledky}

 FROM cola_markets c WHERE c.name = 'cola_b';
 

SELECT c.name, c.shape.Get_GType() {vrací hodnotu označení typu geoobjektu uloženou v parametru SDO_GTYPE}

 FROM cola_markets c WHERE c.name = 'cola_b';

SELECT c.name, c.shape.Get_WKT() {vrací označení typu geoobjektu a jeho koordinát}

 FROM cola_markets c WHERE c.name = 'cola_b';

SELECT c.name, c.shape.ST_IsValid() {ověřuje validnost geoobjektu, podle standardu The ISO/IEC SQL Multimedia standard nese označení well formed for valid. Toleranční hodnota je 0.001.}

 FROM cola_markets c WHERE c.name = 'cola_b'; 
 

Poznámka: některé fungují pouze v "ostré" verzi se Spatial Modulem, Locator nestačí.


Vložte body 90, 91, 92 a zkuste vyhledávací funkci přes jednu souřadnici.

SELECT * from cola_markets c

WHERE c.shape.SDO_POINT.X > 8; {vyhledání geoobjektu typu bod na základě hodnot X-ové složky koordinát}

SELECT c.mkt_id, c.name

 FROM cola_markets c
 WHERE SDO_ANYINTERACT(c.shape,
           SDO_GEOMETRY(2003, NULL, NULL,
             SDO_ELEM_INFO_ARRAY(1,1003,3),
             SDO_ORDINATE_ARRAY(4,6, 8,8))
           ) = 'TRUE';

select SDO_GEOM.SDO_DISTANCE(sdo_point(1,1,1), sdo_point(1,1,1), 0.005) from cola_markets;

select SDO_GEOMETRY(

   2003,  -- two-dimensional polygon
   NULL,
   NULL,
   SDO_ELEM_INFO_ARRAY(1,1003,3), -- one rectangle (1003 = exterior)
   SDO_ORDINATE_ARRAY(1,1, 5,7) 
 ) from cola_markets;

select unique sdo_geom.sdo_distance(SDO_GEOMETRY(

    2001,
    NULL,
    SDO_POINT_TYPE(10, 20, NULL),
    NULL,
    NULL), SDO_GEOMETRY(
    2001,
    NULL,
    SDO_POINT_TYPE(0, 0, NULL),
    NULL,
    NULL), 0.5)
    from cola_markets;


Výpočet obsahu geoobjektu/ů:

SELECT c.name, SDO_GEOM.SDO_AREA(c.shape, 0.005)

FROM cola_markets c 
WHERE c.name = 'cola_a'; {vybrán objekt cola_a}

SELECT name, SDO_GEOM.SDO_AREA(shape, 0.005)

FROM cola_markets; {všech v tabulce cola_markets}


Vyhledání nejbližšího geoobjektu od určeného bodu:

SELECT c.mkt_id, c.name {vyhledání nejbližšího geoobjektu k zadanému bodu (10,7), v případě více blízkých je možné zvýšit počet v parametru "sdo_num_res"}

FROM cola_markets c  
WHERE SDO_NN(c.shape, sdo_geometry(2001, NULL, sdo_point_type(10,7,NULL), NULL, NULL), 'sdo_num_res=1') = 'TRUE';

Zpět na stránku PDB