Difference between revisions of "Příklady použití prostorových operátorů"
m |
|||
Line 1: | Line 1: | ||
− | SELECT c.mkt_id, c.name | + | '''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čí. | ||
+ | |||
+ | <hr> | ||
+ | |||
+ | 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; {v3ech 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 | FROM cola_markets c | ||
− | WHERE SDO_NN(c.shape, | + | WHERE SDO_NN(c.shape, sdo_geometry(2001, NULL, sdo_point_type(10,7,NULL), NULL, NULL), 'sdo_num_res=1') = 'TRUE'; |
Revision as of 12:06, 25 April 2011
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čí.
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; {v3ech 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';