Prostorové operátory
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'.