Restringir a (al complemento de) una geometría, un lapso Z y/o un período
atGeometry(tgeom,geometry[,zspan]) → tgeom
minusGeometry(tgeom,geometry[,zspan]) → tgeom
La geometría debe ser 2D y el cálculo con respecto a ella se realiza en 2D. El resultado conserva la dimensión Z del punto temporal, si existe.
SELECT asText(atGeometry(tgeompoint '[Point(0 0)@2001-01-01, Point(3 3)@2001-01-04)', geometry 'Polygon((1 1,1 2,2 2,2 1,1 1))')); -- {"[POINT(1 1)@2001-01-02, POINT(2 2)@2001-01-03]"} SELECT astext(atGeometry(tgeompoint '[Point(0 0 0)@2001-01-01, Point(4 4 4)@2001-01-05]', geometry 'Polygon((1 1,1 2,2 2,2 1,1 1))')); -- {[POINT Z (1 1 1)@2001-01-02, POINT Z (2 2 2)@2001-01-03]} SELECT asText(atGeometry(tgeompoint '[Point(1 1 1)@2001-01-01, Point(3 1 1)@2001-01-03, Point(3 1 3)@2001-01-05]', 'Polygon((2 0,2 2,2 4,4 0,2 0))', '[0,2]')); -- {[POINT Z (2 1 1)@2001-01-02, POINT Z (3 1 1)@2001-01-03, POINT Z (3 1 2)@2001-01-04]} SELECT asText(atGeometry(tgeometry 'Linestring(1 1,10 1)@2001-01-01', 'Polygon((0 0,0 5,5 5,5 0,0 0))')); -- LINESTRING(1 1,5 1)@2001-01-01
SELECT asText(minusGeometry(tgeompoint '[Point(0 0)@2001-01-01, Point(3 3)@2001-01-04)', geometry 'Polygon((1 1,1 2,2 2,2 1,1 1))')); /* {[POINT(0 0)@2001-01-01, POINT(1 1)@2001-01-02), (POINT(2 2)@2001-01-03, POINT(3 3)@2001-01-04)} */ SELECT astext(minusGeometry(tgeompoint '[Point(0 0 0)@2001-01-01, Point(4 4 4)@2001-01-05]', geometry 'Polygon((1 1,1 2,2 2,2 1,1 1))')); /* {[POINT Z (0 0 0)@2001-01-01, POINT Z (1 1 1)@2001-01-02), (POINT Z (2 2 2)@2001-01-03, POINT Z (4 4 4)@2001-01-05]} */ SELECT asText(minusGeometry(tgeompoint '[Point(1 1 1)@2001-01-01, Point(3 1 1)@2001-01-03, Point(3 1 3)@2001-01-05]', 'Polygon((2 0,2 2,2 4,4 0,2 0))', '[0,2]')); /* {[POINT Z (1 1 1)@2001-01-01, POINT Z (2 1 1)@2001-01-02), (POINT Z (3 1 2)@2001-01-04, POINT Z (3 1 3)@2001-01-05]} */ SELECT asText(minusGeometry(tgeometry 'Linestring(1 1,10 1)@2001-01-01', 'Polygon((0 0,0 5,5 5,5 0,0 0))')); -- LINESTRING(5 1,10 1)@2001-01-01
Restringir a (al complemento de) un stbox
atStbox(tgeom,stbox,borderInc bool=true) → tgeompoint
minusStbox(tgeom,stbox,borderInc bool=true) → tgeompoint
El tercer argumento opcional se utiliza para el mosaico multidimensional (ver the section called “Mosaicos multidimensionales”) para excluir el borde superior de los mosaicos cuando un valor temporal se divide en varios mosaicos, de modo que todos los fragmentos de la geometría temporal sean exclusivos.
SELECT asText(atStbox(tgeompoint '[Point(0 0)@2001-01-01, Point(3 3)@2001-01-04)', stbox 'STBOX XT(((0,0),(2,2)),[2001-01-02, 2001-01-04])')); -- {[POINT(1 1)@2001-01-02, POINT(2 2)@2001-01-03]} SELECT asText(atStbox(tgeompoint '[Point(1 1 1)@2001-01-01, Point(3 3 3)@2001-01-03, Point(3 3 2)@2001-01-04, Point(3 3 7)@2001-01-09]', stbox 'STBOX Z((2,2,2),(3,3,3))')); /* {[POINT Z (2 2 2)@2001-01-02, POINT Z (3 3 3)@2001-01-03, POINT Z (3 3 2)@2001-01-04, POINT Z (3 3 3)@2001-01-05]} */ SELECT asText(atStbox(tgeometry '[Point(1 1)@2001-01-01, Linestring(1 1,3 3)@2001-01-03, Point(2 2)@2001-01-04, Linestring(3 3,4 4)@2001-01-09]', stbox 'STBOX X((2,2),(3,3))')); -- {[LINESTRING(2 2,3 3)@2001-01-03, POINT(2 2)@2001-01-04, POINT(3 3)@2001-01-09]}
SELECT asText(minusStbox(tgeompoint '[Point(1 1)@2001-01-01, Point(4 4)@2001-01-04)', stbox 'STBOX XT(((1,1),(2,2)),[2001-01-03,2001-01-04])')); -- {(POINT(2 2)@2001-01-02, POINT(3 3)@2001-01-03)} SELECT asText(minusStbox(tgeompoint '[Point(1 1 1)@2001-01-01, Point(3 3 3)@2001-01-03, Point(3 3 2)@2001-01-04, Point(3 3 7)@2001-01-09]', stbox 'STBOX Z((2,2,2),(3,3,3))')); /* {[POINT Z (1 1 1)@2001-01-01, POINT Z (2 2 2)@2001-01-02), (POINT Z (3 3 3)@2001-01-05, POINT Z (3 3 7)@2001-01-09]} */ SELECT asText(minusStbox(tgeometry '[Point(1 1)@2001-01-01, Linestring(1 1,3 3)@2001-01-03, Point(2 2)@2001-01-04, Linestring(1 1,4 4)@2001-01-09]', stbox 'STBOX X((2,2),(3,3))')); /* {[POINT(1 1)@2001-01-01, LINESTRING(1 1,2 2)@2001-01-03, LINESTRING(1 1,2 2)@2001-01-04),[MULTILINESTRING((1 1,2 2),(3 3,4 4))@2001-01-09]} */