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.
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 pcpoint a partir de las coordenadas de cada dimensión de la disposición del esquema, incluidas las dimensiones inactivas, que es como se dan sus valores a un esquema con más dimensiones de las que alcanzan las sobrecargas anteriores. Ese número es el que toma PC_MakePoint y NO es el número de dimensiones activas que informa pointCloudSchemaNDims
pcpoint(pcid integer, coordinates float[]) → pcpoint
SELECT pcpoint(1, ARRAY[10.0, 20.0, 30.0]::float[]);
Construye un pcpatch a partir de las coordenadas de sus puntos, un punto tras otro, dando para cada punto cada dimensión de la disposición del esquema, incluidas las dimensiones inactivas. Ese número es el que toma PC_MakePatch y NO es el número de dimensiones activas que informa pointCloudSchemaNDims; un número que sea múltiplo del que no corresponde construye un parche de puntos erróneos en lugar de informar un error. Un parche construido así declara él mismo el esquema, al no haber ningún punto del que leerlo
pcpatch(pcid integer, coordinates float[]) → pcpatch
SELECT pcpatch(1, ARRAY[1.0, 1.0, 1.0, 2.0, 2.0, 2.0]::float[]);
Construye un pcpatch a partir de una lista variádica de pcpoints que comparten el mismo pcid
pcpatch(VARIADIC points pcpoint[]) → pcpatch
SELECT pcpatch(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[])])
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 SELECT SRID(PC_Patch(ARRAY[PC_MakePoint(1, ARRAY[10.0, 20.0, 30.0]), PC_MakePoint(1, ARRAY[11.0, 21.0, 31.0])])); -- 0
Devuelve el multipunto de las posiciones que ocupan los puntos de un parche. El esquema que nombra el pcid decide el SRID y si el resultado lleva una dimensión Z
geometry(pcpatch) → geometry
SELECT ST_AsText(geometry(pcpatch(pcpoint(1, 1, 1, 1), pcpoint(1, 2, 2, 2)))); -- MULTIPOINT Z ((1 1 1),(2 2 2))