Tipos estáticos pcpoint y pcpatch

Los tipos estáticos provienen de pgPointCloud. MobilityDB expone las funciones de acceso de coordenadas con conocimiento del esquema necesarias para proyectar los valores de pgPointCloud en el resto del ecosistema de tipos temporales.

Constructores ergonómicos

La función pcpoint_in de pgPointCloud solo acepta hex-WKB, por lo que el constructor canónico es PC_MakePoint(pcid, ARRAY[…]::float[]). MobilityDB incluye dos sobrecargas SQL ligeras sobre él para literales de prueba más cortos y consultas ad hoc; la validación subyacente de dimensiones del esquema sigue ocurriendo dentro de PC_MakePoint.

  • Construye un pcpoint 2D o 3D directamente a partir de coordenadas x/y(/z)

    pcpoint(pcid integer, x float, y float) → pcpoint

    pcpoint(pcid integer, x float, y float, z float) → pcpoint

    SELECT pcpoint(1, 10.0, 20.0, 30.0);
    -- equivalent to PC_MakePoint(1, ARRAY[10.0, 20.0, 30.0]::float[])
    
  • Construye un pcpatch a partir de una lista variádica de pcpoints que comparten el mismo pcid

    pcpatch(pcid integer, VARIADIC points pcpoint[]) → pcpatch

    SELECT pcpatch(1, pcpoint(1, 1.0, 1.0, 1.0), pcpoint(1, 2.0, 2.0, 2.0));
    -- equivalent to PC_Patch(ARRAY[PC_MakePoint(1, ARRAY[1.0, 1.0, 1.0]::float[]),
    --                              PC_MakePoint(1, ARRAY[2.0, 2.0, 2.0]::float[])])
    

Funciones de acceso

  • Devuelve el identificador de esquema de un pcpoint o pcpatch

    pcid(pcpoint) → integer

    pcid(pcpatch) → integer

    SELECT pcid(PC_MakePoint(1, ARRAY[10.0, 20.0, 30.0]));
    -- 1
    
  • Devuelve una coordenada de un pcpoint, NULL si la dimensión está ausente del esquema

    getX(pcpoint) → float

    getY(pcpoint) → float

    getZ(pcpoint) → float

    WITH pt AS (SELECT PC_MakePoint(1, ARRAY[10.0, 20.0, 30.0]) p)
      SELECT getX(p), getY(p), getZ(p) FROM pt;
    -- 10 | 20 | 30
    
  • Devuelve cualquier dimensión con nombre de un pcpoint, NULL si el nombre es desconocido para el esquema

    getDim(pcpoint,text) → float

    SELECT getDim(PC_MakePoint(1, ARRAY[10.0, 20.0, 30.0]), 'X');
    -- 10
    
  • Devuelve el identificador de referencia espacial (heredado del esquema)

    SRID(pcpoint) → integer

    SRID(pcpatch) → integer

    SELECT SRID(PC_MakePoint(1, ARRAY[10.0, 20.0, 30.0]));
    -- 0