Capítulo 8. Tipos temporales: Operaciones espaciales

Tabla de contenidos

Entrada y salida
Sistema de referencia espacial
Operaciones de cuadro delimitador
Accessores
Transformaciones
Operaciones de distancia
Relaciones espaciales
Relaciones espaciales alguna vez o siempre
Relaciones espaciales temporales

A continuación, especificamos con el símbolo que la función admite puntos 3D y con el símbolo que la función está disponible para geografías.

Entrada y salida

  • Devuelve la representación de texto conocido (Well-Known Text o WKT)

    asText({tpoint,tpoint[],geo[]}) → {text,text[]}

    SELECT asText(tgeompoint 'SRID=4326;[Point(0 0 0)@2001-01-01, Point(1 1 1)@2001-01-02)');
    -- [POINT Z (0 0 0)@2001-01-01, POINT Z (1 1 1)@2001-01-02)
    SELECT asText(ARRAY[geometry 'Point(0 0)', 'Point(1 1)']);
    -- {"POINT(0 0)","POINT(1 1)"}
    
  • Devuelve la representación extendida de texto conocido (Extended Well-Known Text o EWKT)

    asEWKT({tpoint,tpoint[],geo[]}) → {text,text[]}

    SELECT asEWKT(tgeompoint 'SRID=4326;[Point(0 0 0)@2001-01-01, Point(1 1 1)@2001-01-02)');
    -- SRID=4326;[POINT Z (0 0 0)@2001-01-01, POINT Z (1 1 1)@2001-01-02)
    SELECT asEWKT(ARRAY[geometry 'SRID=5676;Point(0 0)', 'SRID=5676;Point(1 1)']);
    -- {"SRID=5676;POINT(0 0)","SRID=5676;POINT(1 1)"}
    
  • Devuelve la representación JSON de características móviles (Moving Features JSON o MF-JSON)

    asMFJSON(tpoint,options=0,flags=0,maxdecdigits=15) → text

    El argumento options puede usarse para agregar BBOX y/o CRS en la salida MFJSON:

    • 0: significa que no hay opción (valor por defecto)

    • 1: MFJSON BBOX

    • 2: MFJSON Short CRS (e.g., EPSG:4326)

    • 4: MFJSON Long CRS (e.g., urn:ogc:def:crs:EPSG::4326)

    El argumento flags puede usarse para personalizar la salida JSON, por ejemplo, para producir una salida JSON fácil de leer (para lectores humanos). Consulte la documentación de la biblioteca json-c para conocer los valores posibles. Los valores típicos son los siguientes:

    • 0: means no option (default value)

    • 1: JSON_C_TO_STRING_SPACED

    • 2: JSON_C_TO_STRING_PRETTY

    El argumento maxdecdigits puede usarse para establecer el número máximo de decimales en la salida de los valores en punto flotante (por defecto 15).

    SELECT asMFJSON(tgeompoint 'Point(1 2)@2001-01-01 18:00:00.15+02');
    /* {"type":"MovingPoint","coordinates":[[1,2]],"datetimes":["2001-01-01T17:00:00.15+01"],
       "interpolation":"None"} */
    SELECT asMFJSON(tgeompoint 'SRID=4326;
      Point(50.813810 4.384260)@2001-01-01 18:00:00.15+02', 3, 2);
    /* {"type":"MovingPoint","crs":{"type":"name","properties":{"name":"EPSG:4326"}},
       "stBoundedBy":{"bbox":[50.81,4.38,50.81,4.38],
       "period":{"begin":"2001-01-01 17:00:00.15+01","end":"2001-01-01 17:00:00.15+01"}},
       "coordinates":[[50.81,4.38]],"datetimes":["2001-01-01T17:00:00.15+01"],
       "interpolation":"None"} */
    
  • Devuelve la representación binaria conocida (Well-Known Binary o WKB)

    asBinary(tpoint,endian text='') → bytea

    El resultado se codifica utilizando la codificación little-endian (NDR) o big-endian (XDR). Si no se especifica ninguna codificación, se utiliza la codificación de la máquina.

    SELECT asBinary(tgeompoint 'Point(1 2 3)@2001-01-01');
    -- \x012e0011000000000000f03f00000000000000400000000000000840009c57d3c11c0000
    
  • Devuelve la representación extendida binaria conocida (Extended Well-Known Binary o EWKB)

    asEWKB(tpoint,endian text='') → bytea

    El resultado se codifica utilizando la codificación little-endian (NDR) o big-endian (XDR). Si no se especifica ninguna codificación, se utiliza la codificación de la máquina.

    SELECT asEWKB(tgeogpoint 'SRID=7844;Point(1 2 3)@2001-01-01');
    -- \x012f0071a41e0000000000000000f03f00000000000000400000000000000840009c57d3c11c0000
    
  • Devuelve la representación hexadecimal extendida binaria conocida (Extended Well-Known Binary o EWKB) en formato texto

    asHexEWKB(tpoint,endian text='') → text

    El resultado se codifica utilizando la codificación little-endian (NDR) o big-endian (XDR). Si no se especifica ninguna codificación, se utiliza la codificación de la máquina.

    SELECT asHexEWKB(tgeompoint 'SRID=3812;Point(1 2 3)@2001-01-01');
    -- 012E0051E40E0000000000000000F03F00000000000000400000000000000840009C57D3C11C0000
    
  • Entrar un punto temporal en una representación de texto conocido (Well-Known Text o WKT)

    tgeompointFromText(text) → tgeompoint

    tgeogpointFromText(text) → tgeogpoint

    SELECT asEWKT(tgeompointFromText(text '[POINT(1 2)@2001-01-01, POINT(3 4)@2001-01-02]'));
    -- [POINT(1 2)@2001-01-01, POINT(3 4)@2001-01-02]
    SELECT asEWKT(tgeogpointFromText(text '[POINT(1 2)@2001-01-01, POINT(3 4)@2001-01-02]'));
    -- SRID=4326;[POINT(1 2)@2001-01-01, POINT(3 4)@2001-01-02]
    
  • Entrar un punto temporal en una representación extendida de texto conocido (Extended Well-Known Text o EWKT)

    tgeompointFromEWKT(text) → tgeompoint

    tgeogpointFromEWKT(text) → tgeogpoint

    SELECT asEWKT(tgeompointFromEWKT(text 'SRID=3812;[POINT(1 2)@2001-01-01,
      POINT(3 4)@2001-01-02]'));
    -- SRID=3812;[POINT(1 2)@2001-01-01 00:00:00+01, POINT(3 4)@2001-01-02 00:00:00+01]
    SELECT asEWKT(tgeogpointFromEWKT(text 'SRID=7844;[POINT(1 2)@2001-01-01,
    	POINT(3 4)@2001-01-02]'));
    -- SRID=7844;[POINT(1 2)@2001-01-01, POINT(3 4)@2001-01-02]
    
  • Entrar un punto temporal en una representación JSON de características móviles (Moving Features)

    tgeompointFromMFJSON(text) → tgeompoint

    tgeogpointFromMFJSON(text) → tgeogpoint

    SELECT asEWKT(tgeompointFromMFJSON(text '{"type":"MovingGeomPoint","crs":{"type":"name",
      "properties":{"name":"EPSG:4326"}},"coordinates":[[50.81,4.38]],
      "datetimes":["2001-01-01T17:00:00.15+01"],"interpolation":"None"}'));
    -- SRID=4326;POINT(50.81 4.38)@2001-01-01 17:00:00.15+01
    SELECT asEWKT(tgeogpointFromMFJSON(text '{"type":"MovingGeogPoint","crs":{"type":"name",
      "properties":{"name":"EPSG:4326"}},"coordinates":[[50.81,4.38]],
      "datetimes":["2001-01-01T17:00:00.15+01"],"interpolation":"None"}'));
    -- SRID=4326;POINT(50.81 4.38)@2001-01-01 17:00:00.15+01
    
  • Entrar un punto temporal en una representación binaria conocida (WKB)

    tgeompointFromBinary(bytea) → tgeompoint

    tgeogpointFromBinary(bytea) → tgeogpoint

    SELECT asEWKT(tgeompointFromBinary(
      '\x012e0011000000000000f03f00000000000000400000000000000840009c57d3c11c0000'));
    -- POINT Z (1 2 3)@2001-01-01
    
  • Entrar un punto temporal en una representación extendida binaria conocida (EWKB)

    tgeompointFromEWKB(bytea) → tgeompoint

    tgeogpointFromEWKB(bytea) → tgeogpoint

    SELECT asEWKT(tgeogpointFromEWKB(
      '\x012f0071a41e0000000000000000f03f00000000000000400000000000000840009c57d3c11c0000'));
    -- SRID=7844;POINT Z (1 1 1)@2001-01-01
    
  • Entrar un punto temporal geométrico en una representación hexadecimal extendida binaria conocida (HexEWKB)

    tgeompointFromHexEWKB(text) → tgeompoint

    tgeogpointFromHexEWKB(text) → tgeogpoint

    SELECT asEWKT(tgeompointFromHexEWKB(
      '012E0051E40E0000000000000000F03F00000000000000400000000000000840009C57D3C11C0000'));
    -- SRID=3812;POINT(1 2 3)@2001-01-01