Chapter 8. Tipos temporales geométricos (Parte 2)

Table of Contents

Restricciones
Sistema de referencia espacial
Operaciones de cuadro delimitador
Operaciones de distancia
Relaciones espaciales
Relaciones espaciales alguna vez o siempre
Relaciones espaciales temporales

Restricciones

  • 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 mosaicos multidimensionales (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]} */