Difference between revisions of "Prostorové operátory"
m |
m |
||
(11 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | Modul Spatial používá dvoufázové model vyhodnocování dotazu s primárním a sekundárním filtrem při řešení prostorových dotazů či join operací (spojení). Pokud se provádí dvoufázová filtrace, vrací se velmi přesná sada výsledků. Existují operátory, které využívají pouze první z filtrů (například SDO_FILTER), kdy výstupem je pouze sada kandidátů na zařazení do výsledku, neboť tato možnost je postavena na použití tzv. MBR (minimum bounding rectangle) - minimálních ohraničujících obdélníků. Ty mají za úkol v prvních průchodu vybrat do výsledku takové geometrie, jejichž MBR jsou v požadovaném vztahu. Teprve v druhém filtru dochází ke kontrole samotných geometrií a vyhovují-li požadovanému vztahu, jsou zařazeny do výsledné sady. | |
− | Operator | + | U operátorů, které Oracle nabízí je proto vhodné ověřit v dokumentaci, zda je operátor pouze jednofiltrový (například SDO_FILTER) nebo používá obou filtrů (například SDO_RELATE). V tabulce jsou uvedeny základní operátory, které Oracle Spatial nabízí. |
− | SDO_FILTER | + | |
− | SDO_JOIN | + | '''Základní Spatial Operátory''' |
− | SDO_NN | + | |
− | SDO_NN_DISTANCE Returns the distance of an object returned by the SDO_NN operator. | + | Operator Description |
+ | |||
+ | SDO_FILTER Specifies which geometries may interact with a given geometry. | ||
+ | SDO_JOIN Performs a spatial join based on one or more topological relationships. | ||
+ | SDO_NN Determines the nearest neighbor geometries to a geometry. | ||
+ | SDO_NN_DISTANCE Returns the distance of an object returned by the SDO_NN operator. | ||
SDO_WITHIN_DISTANCE Determines if two geometries are within a specified distance from one another. | SDO_WITHIN_DISTANCE Determines if two geometries are within a specified distance from one another. | ||
− | SDO_RELATE | + | SDO_RELATE Determines whether or not two geometries interact in a specified way. |
+ | (See for convenient alternative operators for performing specific mask value operations.) | ||
+ | |||
+ | Pro operátor SDO_RELATE je definováno 9 topologických vztahů, které se používají v klauzuli WHERE. Podmínka by měla mít výraz ve tvaru SDO_RELATE (arg1, arg2, "mask = <some_mask_val>") = "TRUE", kde hodnoty masky jsou vypsány v další tabulce. Kompletní popis operátoru SDO_RELATE je uveden v dokumentační kapitole 19 [http://docs.oracle.com/cd/E11882_01/appdev.112/e11830/sdo_operat.htm#SPATL1039 SDO_RELATE]. | ||
+ | |||
+ | '''Operátory u operací SDO_RELATE''' | ||
+ | |||
+ | Operator Description | ||
+ | |||
+ | SDO_ANYINTERACT Checks if any geometries in a table have the ANYINTERACT topological relationship | ||
+ | with a specified geometry. | ||
+ | SDO_CONTAINS Checks if any geometries in a table have the CONTAINS topological relationship | ||
+ | with a specified geometry. | ||
+ | SDO_COVEREDBY Checks if any geometries in a table have the COVEREDBY topological relationship | ||
+ | with a specified geometry. | ||
+ | SDO_COVERS Checks if any geometries in a table have the COVERS topological relationship | ||
+ | with a specified geometry. | ||
+ | SDO_EQUAL Checks if any geometries in a table have the EQUAL topological relationship | ||
+ | with a specified geometry. | ||
+ | SDO_INSIDE Checks if any geometries in a table have the INSIDE topological relationship | ||
+ | with a specified geometry. | ||
+ | SDO_ON Checks if any geometries in a table have the ON topological relationship | ||
+ | with a specified geometry. | ||
+ | SDO_OVERLAPBDYDISJOINT Checks if any geometries in a table have the OVERLAPBDYDISJOINT topological relationship | ||
+ | with a specified geometry. | ||
+ | SDO_OVERLAPBDYINTERSECT Checks if any geometries in a table have the OVERLAPBDYINTERSECT topological relationship | ||
+ | with a specified geometry. | ||
+ | SDO_OVERLAPS Checks if any geometries in a table overlap (that is, have the OVERLAPBDYDISJOINT | ||
+ | or OVERLAPBDYINTERSECT topological relationship with) a specified geometry. | ||
+ | SDO_TOUCH Checks if any geometries in a table have the TOUCH topological relationship | ||
+ | with a specified geometry. | ||
+ | |||
+ | V případě použití některého z popsaných vztahů v parametru mask, se užije pouze název samotný bez prefixu ''SDO_''. | ||
+ | Například: | ||
+ | SDO_RELATE(p.tvarparcely, h.tvarparcely, 'mask=touch')='TRUE'. | ||
+ | |||
+ | [http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Hlavní stránka předmětu] |
Latest revision as of 15:36, 5 August 2014
Modul Spatial používá dvoufázové model vyhodnocování dotazu s primárním a sekundárním filtrem při řešení prostorových dotazů či join operací (spojení). Pokud se provádí dvoufázová filtrace, vrací se velmi přesná sada výsledků. Existují operátory, které využívají pouze první z filtrů (například SDO_FILTER), kdy výstupem je pouze sada kandidátů na zařazení do výsledku, neboť tato možnost je postavena na použití tzv. MBR (minimum bounding rectangle) - minimálních ohraničujících obdélníků. Ty mají za úkol v prvních průchodu vybrat do výsledku takové geometrie, jejichž MBR jsou v požadovaném vztahu. Teprve v druhém filtru dochází ke kontrole samotných geometrií a vyhovují-li požadovanému vztahu, jsou zařazeny do výsledné sady.
U operátorů, které Oracle nabízí je proto vhodné ověřit v dokumentaci, zda je operátor pouze jednofiltrový (například SDO_FILTER) nebo používá obou filtrů (například SDO_RELATE). V tabulce jsou uvedeny základní operátory, které Oracle Spatial nabízí.
Základní Spatial Operátory
Operator Description
SDO_FILTER Specifies which geometries may interact with a given geometry. SDO_JOIN Performs a spatial join based on one or more topological relationships. SDO_NN Determines the nearest neighbor geometries to a geometry. SDO_NN_DISTANCE Returns the distance of an object returned by the SDO_NN operator. SDO_WITHIN_DISTANCE Determines if two geometries are within a specified distance from one another. SDO_RELATE Determines whether or not two geometries interact in a specified way. (See for convenient alternative operators for performing specific mask value operations.)
Pro operátor SDO_RELATE je definováno 9 topologických vztahů, které se používají v klauzuli WHERE. Podmínka by měla mít výraz ve tvaru SDO_RELATE (arg1, arg2, "mask = <some_mask_val>") = "TRUE", kde hodnoty masky jsou vypsány v další tabulce. Kompletní popis operátoru SDO_RELATE je uveden v dokumentační kapitole 19 SDO_RELATE.
Operátory u operací SDO_RELATE
Operator Description
SDO_ANYINTERACT Checks if any geometries in a table have the ANYINTERACT topological relationship with a specified geometry. SDO_CONTAINS Checks if any geometries in a table have the CONTAINS topological relationship with a specified geometry. SDO_COVEREDBY Checks if any geometries in a table have the COVEREDBY topological relationship with a specified geometry. SDO_COVERS Checks if any geometries in a table have the COVERS topological relationship with a specified geometry. SDO_EQUAL Checks if any geometries in a table have the EQUAL topological relationship with a specified geometry. SDO_INSIDE Checks if any geometries in a table have the INSIDE topological relationship with a specified geometry. SDO_ON Checks if any geometries in a table have the ON topological relationship with a specified geometry. SDO_OVERLAPBDYDISJOINT Checks if any geometries in a table have the OVERLAPBDYDISJOINT topological relationship with a specified geometry. SDO_OVERLAPBDYINTERSECT Checks if any geometries in a table have the OVERLAPBDYINTERSECT topological relationship with a specified geometry. SDO_OVERLAPS Checks if any geometries in a table overlap (that is, have the OVERLAPBDYDISJOINT or OVERLAPBDYINTERSECT topological relationship with) a specified geometry. SDO_TOUCH Checks if any geometries in a table have the TOUCH topological relationship with a specified geometry.
V případě použití některého z popsaných vztahů v parametru mask, se užije pouze název samotný bez prefixu SDO_. Například:
SDO_RELATE(p.tvarparcely, h.tvarparcely, 'mask=touch')='TRUE'.