Temporal Point Clouds

Inicio rápido

Registrar un esquema

Tipos estáticos pcpoint y pcpatch

Constructores ergonómicos

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

  • pcpoint: 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

  • pcpatch: 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: Construye un pcpatch a partir de una lista variádica de pcpoints que comparten el mismo pcid

Funciones de acceso

  • pcid: Devuelve el identificador de esquema de un pcpoint o pcpatch

  • getX, getY, getZ: Devuelve una coordenada de un pcpoint, NULL si la dimensión está ausente del esquema

  • getDim: Devuelve cualquier dimensión con nombre de un pcpoint, NULL si el nombre es desconocido para el esquema

  • SRID: Devuelve el identificador de referencia espacial (heredado del esquema)

  • geometry: 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

Tipos de conjunto pcpointset y pcpatchset

Constructores

  • set: Construye un conjunto a partir de un array de valores, todos los cuales deben compartir el mismo pcid

Caja Delimitadora tpcbox

Constructores

Conversiones

  • tpcbox: Convertir un pcpoint a un tpcbox degenerado (de extensión cero); el SRID y el pcid provienen del esquema

  • tpcbox: Convertir un pcpatch a un tpcbox usando los límites PCBOUNDS 2D integrados en el parche; la segunda forma acepta un SRID explícito en lugar de buscarlo en el esquema

Accesores

Transformaciones

  • round: Devuelve un tpcbox con las coordenadas redondeadas al número de dígitos decimales indicado

  • setSRID: Devuelve un tpcbox con el SRID sobreescrito. No reproyecta las coordenadas, para ello, proyecte primero el tpcpoint subyacente y tome la caja delimitadora del resultado

Operaciones de conjuntos

  • tpcbox_union: Devuelve la unión de dos tpcboxes; ambas deben compartir el mismo pcid

  • tpcbox_intersection: Devuelve la intersección de dos tpcboxes, NULL si son disjuntas o el pcid no coincide

Operadores Topológicos

  • @>: Devuelve true si el primer tpcbox contiene al segundo

  • <@: Devuelve true si el primer tpcbox está contenido en el segundo

  • &&: Devuelve true si dos tpcboxes se solapan

  • ~=: Devuelve true si dos tpcboxes son iguales en las dimensiones que comparten

  • -|-: Devuelve true si dos tpcboxes son adyacentes (comparten un límite)

Operadores de Posición

  • <<, &<, >>, &>: Comprueba el orden en el eje X de dos tpcboxes

  • <<|, &<|, |>>, |&>: Comprueba el orden en el eje Y de dos tpcboxes

  • <</, &</, />>, /&>: Comprueba el orden en el eje Z de dos tpcboxes (devuelve false si alguna carece de Z)

  • <<#, &<#, #>>, #&>: Comprueba el orden en el eje temporal de dos tpcboxes (devuelve false si alguna carece de T)

Comparaciones

  • =, <>, <, <=, >=, >: Compara dos tpcboxes; orden total sobre la codificación canónica (pcid, srid, flags, período y a continuación límites espaciales en orden XYZ-min/max)

Tipo Temporal tpcpoint

Constructores

  • tpcpoint: Construir un pcpoint temporal de subtipo instante

  • tpcpointSeq: Construir un pcpoint temporal de subtipo secuencia a partir de un array de instantes. La interpolación es una de 'discrete', 'step'; 'step' es el valor predeterminado para tpcpoint, ya que los pcpoints llevan dimensiones heterogéneas que no se interpolan de manera lineal

  • tpcpointSeqSet: Construir un pcpoint temporal de subtipo conjunto de secuencias a partir de un array de secuencias

Funciones de Acceso

  • pcid: Devolver el id de esquema de pgPointCloud compartido por todos los instantes

  • SRID: Devolver el SRID heredado del esquema

Proyecciones por Dimensión

  • getX, getY, getZ: Proyectar un tpcpoint sobre una dimensión espacial, produciendo un tfloat

  • getDim: Proyectar un tpcpoint sobre cualquier dimensión de esquema con nombre, produciendo un tfloat

Conversiones

  • ::: Convertir un tpcpoint a un punto de geometría temporal, proyectando todas las dimensiones no espaciales mientras se preservan las marcas temporales. El resultado tiene el mismo SRID que el esquema; su dimensionalidad (2D frente a 3D) sigue la presencia de Z en el esquema. No se proporciona una conversión inversa: reconstruir un pcpoint requiere un esquema destino que el valor temporal solo no puede suministrar

Transformaciones

Comparaciones

  • =, <>, <, <=, >=, >: Comparar dos tpcpoints lexicográficamente sobre sus codificaciones canónicas

  • eEq, aEq, eNe, aNe, ?=, %=: Comprobar si el valor en algún instante (alguna vez) o en todos los instantes (siempre) es igual a, o distinto de, un pcpoint u otro tpcpoint

  • tEq, tNe, #=: Devolver la igualdad o desigualdad temporal de un tpcpoint con un pcpoint o con otro tpcpoint, como un tbool

Restricciones

  • atValue, minusValue, atValues, minusValues: Restringir un tpcpoint a (al complemento de) un valor pcpoint o un conjunto de valores pcpoint

  • atTime, minusTime: Restringir un tpcpoint a un selector temporal (marca de tiempo, periodo, conjunto o spanset), o eliminarlo

  • atTpcbox, minusTpcbox: Restringir un tpcpoint al extent espacial / temporal de un tpcbox, o eliminarlo. Devuelve NULL cuando el pcid del tpcbox no coincide con el del tpcpoint. Internamente proyecta a un tgeompoint a través de la caché de esquemas, restringe la proyección mediante el stbox equivalente y devuelve el span temporal del resultado al tpcpoint original para preservar los valores pcpoint completos

  • beforeTimestamp, afterTimestamp: Restringir un tpcpoint a los instantes anteriores o posteriores a una marca de tiempo. El indicador strict excluye el instante en la marca de tiempo misma

Modificaciones

  • insert, update: Insertar un tpcpoint en otro, o actualizar otro con él

  • deleteTime: Eliminar un selector de tiempo (marca de tiempo, conjunto, período o conjunto de spans) de un tpcpoint

  • appendInstant, appendSequence: Añadir un instante o una secuencia a un tpcpoint

Fragmentación

  • unnest: Devolver los valores distintos de un tpcpoint con el conjunto de spans durante el cual toma cada uno de ellos

  • timeSplit: Fragmentar un tpcpoint en fragmentos, uno por cada intervalo de tiempo

  • spans: Devuelve el arreglo de lapsos de tiempo de los segmentos de un tpcpoint

  • splitNSpans, splitEachNSpans: Devuelve los lapsos de tiempo de un tpcpoint dividido en un número dado de contenedores, o con un número dado de segmentos por contenedor

Operadores de caja delimitadora

  • &&, @>, <@, ~=, -|-: Predicados topológicos: && solapa, @> contiene, <@ contenido en, ~= mismo, -|- adyacente.

  • <<, >>, <<|, |>>, <</, />>, <<#, #>>: Predicados direccionales estrictos sobre el eje X (<<, >>), eje Y (<<|, |>>), eje Z (<</, />>) y eje temporal (<<#, #>>), más sus variantes "solapa o X": &<, &>, &<|, |&>, &</, /&>, &<#, #&>.

  • |=|, nearestApproachDistance: Distancia de aproximación más cercana, ordenable KNN mediante la clase de operadores GiST: SELECT … ORDER BY temp |=| query LIMIT N se acelera con índice. El desajuste de pcid produce infinito.

Relaciones espaciales

Relaciones espaciales temporales

Tipo Temporal tpcpatch

Constructores

  • tpcpatch: Construir un pcpatch temporal de subtipo instante

  • tpcpatchSeq: Construir un pcpatch temporal de subtipo secuencia

  • tpcpatchSeqSet: Construir un pcpatch temporal de subtipo conjunto de secuencias

Accesores

  • startNumPoints, endNumPoints: Devolver el número de puntos del parche contenido en el primer o último instante

  • numPoints: Devolver el número total de puntos de todos los parches de todos los instantes. Se lee directamente de la cabecera de cada parche, sin descompresión.

  • points: Función devuelve-conjunto: emite una fila por cada (marca de tiempo de instante, punto) recorriendo el parche de cada instante y descomponiéndolo mediante la API C en memoria de pgPointCloud. Útil para combinar una columna tpcpatch con predicados por punto que los operadores de nivel de caja delimitadora no pueden expresar. El coste es O(total de puntos), una descompresión por instante más una emisión de fila por punto.

Transformaciones

Restricciones

  • atValue, minusValue, atValues, minusValues: Restringir un tpcpatch a (al complemento de) un valor pcpatch o un conjunto de valores pcpatch

  • atTpcbox, minusTpcbox: Restringir un tpcpatch a los instantes cuyo parche supera una prueba de superposición aproximada de PCBOUNDS frente al tpcbox, o eliminarlos. La granularidad es a nivel de parche: cada instante superviviente conserva su payload pcpatch textualmente, sin descompresión por punto. Como el PCBOUNDS de pgPointCloud es 2D, la dimensión Z de la caja se ignora a esta granularidad. Devuelve NULL cuando el pcid del tpcbox no coincide.

  • atTpcboxFine, minusTpcboxFine: Variante por punto de la anterior: cada instante superviviente contiene un pcpatch recién construido que incluye solo los puntos dentro (o fuera, en el caso de minus) del tpcbox en 2D, y en 3D cuando la caja tiene dimensión Z. Los instantes cuyo parche filtra hasta cero puntos se descartan. Más lenta que la variante aproximada porque cada parche se descomprime y reconstruye; úsela cuando se necesite fidelidad a nivel de punto.

  • atGeometry, minusGeometry: Restringir un tpcpatch a los puntos cuya proyección XY intersecta (o no intersecta, en el caso de minus) una geometría 2D. Z se ignora. El llamador debe garantizar la compatibilidad de SRID entre el esquema del parche y la geometría.

  • beforeTimestamp, afterTimestamp: Restringir un tpcpatch a los instantes anteriores o posteriores a una marca de tiempo. El indicador strict excluye el instante en la marca de tiempo misma

Modificaciones

  • insert, update: Insertar un tpcpatch en otro, o actualizar otro con él

  • deleteTime: Eliminar un selector de tiempo (marca de tiempo, conjunto, período o conjunto de spans) de un tpcpatch

  • appendInstant, appendSequence: Añadir un instante o una secuencia a un tpcpatch

Fragmentación

  • unnest: Devolver los valores distintos de un tpcpatch con el conjunto de spans durante el cual toma cada uno de ellos

  • timeSplit: Fragmentar un tpcpatch en fragmentos, uno por cada intervalo de tiempo

  • spans: Devuelve el arreglo de lapsos de tiempo de los segmentos de un tpcpatch

  • splitNSpans, splitEachNSpans: Devuelve los lapsos de tiempo de un tpcpatch dividido en un número dado de contenedores, o con un número dado de segmentos por contenedor

Relaciones espaciales

Conversiones

  • tgeometry: Convierte un parche temporal en la geometría temporal de los multipuntos que ocupan sus parches. El parche de cada instante se convierte en el multipunto de las posiciones que ocupan sus puntos, leídas a través del esquema que nombra su pcid

Relaciones espaciales temporales

Operadores de caja delimitadora

Comparaciones

  • eEq, aEq, eNe, aNe, ?=, %=: Comprobar si el valor en algún instante (alguna vez) o en todos los instantes (siempre) es igual a, o distinto de, un pcpatch u otro tpcpatch

  • tEq, tNe, #=: Devolver la igualdad o desigualdad temporal de un tpcpatch con un pcpatch o con otro tpcpatch, como un tbool

Agregaciones

  • extent: Agregado de caja delimitadora sobre una columna de valores tpcpoint, tpcpatch o tpcbox. Devuelve el tpcbox más pequeño que contiene todas las entradas. Agregar a través de pcid distintos genera un error, la caja delimitadora sería ininterpretable ya que las dimensiones son relativas al pcid.

  • tCount, wCount: Conteo temporal y conteo por ventana de filas superpuestas en cada marca de tiempo. El resultado es un tint. Todas las filas de entrada deben compartir el mismo subtipo temporal (instante / secuencia / conjunto de secuencias).

  • tnpoints: Conteo de puntos de pcpatch por instante, sumado a través de las filas. Distinto de tCount(tpcpatch), que cuenta el número de parches (siempre 1 por instante). tnpoints se lee como «cuántos puntos había en la nube en el tiempo t», la primitiva natural para el control de calidad de la ingesta y los paneles de densidad a lo largo del tiempo.

  • tdensity: Densidad de puntos por instante (numPoints / área-bbox-xy) sumada a través de las filas. Cada pcpatch lleva el PCBOUNDS en línea (xmin / xmax / ymin / ymax) por lo que el término de área de la caja delimitadora se lee directamente, sin recálculo. Un parche de 1 punto o colineal produce +Infinity para ese instante; filtre con isfinite() en consultas posteriores si es necesario.

  • merge, mergeAgg: Combina múltiples valores temporales en uno solo con todos los instantes de entrada fusionados en orden temporal. Todas las entradas deben compartir el mismo pcid y subtipo.

  • appendInstant, appendSequence, appendInstantAgg, appendSequenceAgg: Agregados de construcción en flujo: appendInstant ensambla instantes en una secuencia; appendSequence ensambla secuencias en un conjunto de secuencias. Útil para cargadores de trayectorias que consumen filas en orden temporal.

Salida de texto

  • asText: Devolver la representación textual de un tpcpoint, o de un arreglo de ellos, y convertir un tpcpoint a texto

  • asText: Devolver la representación textual de un tpcpatch, o de un arreglo de ellos, y convertir un tpcpatch a texto

Salida MF-JSON

  • asMFJSON: Para tpcpoint, el tipo temporal se emite como {"type":"MovingPCPoint", … "coordinates":[[X,Y,Z], …], "datetimes":[…]}. X/Y/[Z] se extraen del pcpoint de cada instante mediante la caché de esquemas; si el esquema carece de X/Y el array de coordenadas está vacío para ese instante.

  • asMFJSON: Para tpcpatch, la etiqueta de tipo es "MovingPCPatch" y cada instante emite un pequeño objeto {"pcid":N, "npoints":N, "bounds":[xmin,xmax,ymin,ymax]}. La carga de puntos comprimida no está intencionadamente en el JSON, use asBinary / asHexWKB para el ida y vuelta.

Indexes

Binary Representation

PDAL Integration

PCL Bridge