Difference between revisions of "Příklady použití prostorových operátorů"
From Wikivyuka
m |
m (→Co je výsledkem tohoto dotazu?) |
||
(17 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | ==Použití metod objektu SDO_GEOMETRY== | |
− | + | Použití metod, které jsou definovány pro třídu objektů SDO_Geometry. Zjišťujeme hodnoty atributů o prostorových složkách uložených objektů v databázi. | |
− | SELECT c.name, c.shape.Get_Dims() {vrací dimenzi geoobjektu, lze zaměnit s metodou ST_CoordDim, obě vrací stejné výsledky} | + | 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'; | 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} | + | 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'; | 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} | + | 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'; | 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.} | + | 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'; | + | FROM cola_markets c WHERE c.name = 'cola_b'; |
− | + | ||
− | + | ==Příklady na použití prostorových složek při dotazování== | |
− | + | ====Vyhledání na základě omezení hodnoty jedné z koordinát==== | |
Vložte body 90, 91, 92 a zkuste vyhledávací funkci přes jednu souřadnici. Lze použít porovnávací operátory jako u jiných číselných hodnot. | Vložte body 90, 91, 92 a zkuste vyhledávací funkci přes jednu souřadnici. Lze použít porovnávací operátory jako u jiných číselných hodnot. | ||
− | SELECT * from cola_markets c | + | 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} | WHERE c.shape.SDO_POINT.X > 8; {vyhledání geoobjektu typu bod na základě hodnot X-ové složky koordinát} | ||
− | + | ====Výpočet obsahu geoobjektu/ů:==== | |
− | |||
− | |||
− | SELECT c.name, SDO_GEOM.SDO_AREA(c.shape, 0.005) | + | SELECT c.name, SDO_GEOM.SDO_AREA(c.shape, 0.005) |
FROM cola_markets c | FROM cola_markets c | ||
WHERE c.name = 'cola_a'; {vybrán objekt cola_a} | WHERE c.name = 'cola_a'; {vybrán objekt cola_a} | ||
− | SELECT name, SDO_GEOM.SDO_AREA(shape, 0.005) | + | SELECT name, SDO_GEOM.SDO_AREA(shape, 0.005) |
FROM cola_markets; {všech v tabulce cola_markets} | 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"} | + | SELECT c.mkt_id, c.name, c.shape {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, sdo_geometry(2001, NULL, sdo_point_type(10,7,NULL), NULL, NULL), 'sdo_num_res=1') = 'TRUE'; | WHERE SDO_NN(c.shape, sdo_geometry(2001, NULL, sdo_point_type(10,7,NULL), NULL, NULL), 'sdo_num_res=1') = 'TRUE'; | ||
− | + | ====Vyhledání geoobjektů, které mají jakoukoli vazbu na objekt definovaný v dotaze :==== | |
− | |||
− | |||
− | SELECT c.mkt_id, c.name | + | SELECT c.mkt_id, c.name, c.shape |
FROM cola_markets c | FROM cola_markets c | ||
WHERE SDO_ANYINTERACT(c.shape, | WHERE SDO_ANYINTERACT(c.shape, | ||
Line 55: | Line 49: | ||
) = 'TRUE'; | ) = 'TRUE'; | ||
− | + | ====Mají nějakou vazbu zvolené geoobjekty?==== | |
+ | |||
+ | SELECT SDO_GEOM.RELATE(c_b.shape, 'anyinteract', c_d.shape, 0.005) | ||
+ | FROM cola_markets c_b, cola_markets c_d | ||
+ | WHERE c_b.name = 'cola_b' AND c_d.name = 'cola_d'; | ||
− | + | ====Vyhledání geoobjektů, které obsahují objekt definovaný v dotaze :==== | |
− | SELECT | + | SELECT c.mkt_id, c.name, c.shape |
− | + | FROM cola_markets c | |
− | + | WHERE SDO_CONTAINS(c.shape, | |
+ | SDO_GEOMETRY(2003, NULL, NULL, | ||
+ | SDO_ELEM_INFO_ARRAY(1,1003,3), | ||
+ | SDO_ORDINATE_ARRAY(7,8, 9,9)) | ||
+ | ) = 'TRUE'; | ||
− | |||
− | + | ====Vyhledání geoobjektů, které jsou obsaženy v objektu definovaném v dotaze :==== | |
− | SELECT c.mkt_id, c.name | + | SELECT c.mkt_id, c.name, c.shape |
FROM cola_markets c | FROM cola_markets c | ||
− | WHERE | + | WHERE SDO_COVEREDBY(c.shape, |
SDO_GEOMETRY(2003, NULL, NULL, | SDO_GEOMETRY(2003, NULL, NULL, | ||
SDO_ELEM_INFO_ARRAY(1,1003,3), | SDO_ELEM_INFO_ARRAY(1,1003,3), | ||
− | SDO_ORDINATE_ARRAY( | + | SDO_ORDINATE_ARRAY(1,1, 5,8)) |
) = 'TRUE'; | ) = 'TRUE'; | ||
− | + | ====Vyhledání vzdálenosti dvou geoobjektů :==== | |
+ | |||
+ | SELECT SDO_GEOM.SDO_DISTANCE(c_b.shape, c_d.shape, 0.005) | ||
+ | FROM cola_markets c_b, cola_markets c_d | ||
+ | WHERE c_b.name = 'cola_b' AND c_d.name = 'cola_d'; | ||
− | + | ====Co je výsledkem tohoto dotazu?==== | |
− | select unique sdo_geom.sdo_distance(SDO_GEOMETRY( | + | select unique sdo_geom.sdo_distance(SDO_GEOMETRY( |
2001, | 2001, | ||
NULL, | NULL, | ||
Line 92: | Line 97: | ||
from cola_markets; | from cola_markets; | ||
− | + | Poznámka: některé operátory mohou fungovat pouze v "ostré" verzi se Spatial Modulem, Locator nestačí. | |
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze Zpět na stránku PDB] | [http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze Zpět na stránku PDB] |
Latest revision as of 08:33, 17 May 2013
Contents
- 1 Použití metod objektu SDO_GEOMETRY
- 2 Příklady na použití prostorových složek při dotazování
- 2.1 Vyhledání na základě omezení hodnoty jedné z koordinát
- 2.2 Výpočet obsahu geoobjektu/ů:
- 2.3 Vyhledání nejbližšího geoobjektu od určeného bodu:
- 2.4 Vyhledání geoobjektů, které mají jakoukoli vazbu na objekt definovaný v dotaze :
- 2.5 Mají nějakou vazbu zvolené geoobjekty?
- 2.6 Vyhledání geoobjektů, které obsahují objekt definovaný v dotaze :
- 2.7 Vyhledání geoobjektů, které jsou obsaženy v objektu definovaném v dotaze :
- 2.8 Vyhledání vzdálenosti dvou geoobjektů :
- 2.9 Co je výsledkem tohoto dotazu?
Použití metod objektu SDO_GEOMETRY
Použití metod, které jsou definovány pro třídu objektů SDO_Geometry. Zjišťujeme hodnoty atributů o prostorových složkách uložených objektů v databázi.
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';
Příklady na použití prostorových složek při dotazování
Vyhledání na základě omezení hodnoty jedné z koordinát
Vložte body 90, 91, 92 a zkuste vyhledávací funkci přes jednu souřadnici. Lze použít porovnávací operátory jako u jiných číselných hodnot.
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}
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, c.shape {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';
Vyhledání geoobjektů, které mají jakoukoli vazbu na objekt definovaný v dotaze :
SELECT c.mkt_id, c.name, c.shape 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';
Mají nějakou vazbu zvolené geoobjekty?
SELECT SDO_GEOM.RELATE(c_b.shape, 'anyinteract', c_d.shape, 0.005) FROM cola_markets c_b, cola_markets c_d WHERE c_b.name = 'cola_b' AND c_d.name = 'cola_d';
Vyhledání geoobjektů, které obsahují objekt definovaný v dotaze :
SELECT c.mkt_id, c.name, c.shape FROM cola_markets c WHERE SDO_CONTAINS(c.shape, SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,3), SDO_ORDINATE_ARRAY(7,8, 9,9)) ) = 'TRUE';
Vyhledání geoobjektů, které jsou obsaženy v objektu definovaném v dotaze :
SELECT c.mkt_id, c.name, c.shape FROM cola_markets c WHERE SDO_COVEREDBY(c.shape, SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,3), SDO_ORDINATE_ARRAY(1,1, 5,8)) ) = 'TRUE';
Vyhledání vzdálenosti dvou geoobjektů :
SELECT SDO_GEOM.SDO_DISTANCE(c_b.shape, c_d.shape, 0.005) FROM cola_markets c_b, cola_markets c_d WHERE c_b.name = 'cola_b' AND c_d.name = 'cola_d';
Co je výsledkem tohoto dotazu?
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;
Poznámka: některé operátory mohou fungovat pouze v "ostré" verzi se Spatial Modulem, Locator nestačí.