Esta sección recoge el conocimiento operativo que los consumidores necesitan además de la referencia de funciones: cuándo tquadbin es el tipo adecuado, las convenciones que asume la implementación, y los peligros específicos de QUADBIN que las cargas de trabajo reales deben tener en cuenta. La cuadrícula cuadrada jerárquica QUADBIN tiene algunas propiedades no obvias que la codificación bit a bit en int64 oculta; esta sección las expone para que no sorprendan a los consumidores.
Use tquadbin cuando el identificador natural de una ubicación discreta a una resolución dada sea una tesela QUADBIN — viajes de vehículos agrupados a un nivel de zoom fijo, lecturas de sensores agrupadas por tesela, o eventos asociados a su celda contenedora, especialmente en flujos de trabajo que ya hablan el esquema de teselado slippy-map / web-mercator. El tipo almacena una celda QUADBIN por instante; la resolución puede variar entre instantes de una misma trayectoria pero la mayoría de las cargas de trabajo fijan una resolución por columna.
Elija tgeompoint / tgeogpoint en lugar de tquadbin cuando la posición geográfica real (precisión sub-celda) sea el valor de interés. Elija tbigint en lugar de tquadbin cuando los valores resulten ser enteros de 64 bits pero no lleven semántica QUADBIN — las representaciones binarias son idénticas (se convierten sin pérdidas vía tquadbin :: tbigint y de vuelta) pero el sistema de tipos SQL usa la distinción para rechazar funciones agnósticas a QUADBIN sobre trayectorias específicas de QUADBIN.
Algunos peligros muerden de forma fiable a las cargas de trabajo que usan celdas QUADBIN. Cada uno es una propiedad de la propia cuadrícula QUADBIN y no una decisión de implementación de MobilityDB; las mitigaciones siguientes explican cómo trabajar con ellos.
El orden int64 es arbitrario respecto a la geometría de la cuadrícula. Los identificadores de celda QUADBIN son enteros de 64 bits cuyo patrón de bits codifica una etiqueta de cabecera, la resolución y las coordenadas de tesela. El orden bit a bit de dos celdas no tiene significado de proximidad espacial — dos celdas adyacentes en bits pueden estar lejos, y dos celdas espacialmente adyacentes pueden tener patrones de bits diferentes.
Mitigación: tquadbin deliberadamente no tiene tipos complementarios quadbinspan / quadbinspanset (precedente: geometry no tiene geometryspan). El filtrado por rango de valores debe pasar por las funciones de inspección quadbin_* (resolución, validez, jerarquía) o por la enumeración explícita de conjuntos vía quadbinset. El código que asume que cell_a < cell_b refleja proximidad espacial producirá resultados erróneos silenciosamente.
Mezcla de resoluciones en las operaciones. Las celdas QUADBIN a distintas resoluciones (0–26) representan áreas de cobertura diferentes. Mezclar resoluciones en una misma trayectoria es válido pero semánticamente requiere una justificación explícita — quadbinCellToParent(cell, res_mas_gruesa) engruesa y quadbinCellToChildren(parent, res_mas_fina) refina.
Mitigación: los consumidores deben documentar la invariante de resolución por trayectoria (por ejemplo, "todas las celdas son de resolución 10") y validar las entradas en el límite de ingesta. El accesor quadbinGetResolution permite que una restricción CHECK lo imponga.
Límite de latitud de web-mercator. QUADBIN hereda la proyección web-mercator, que está definida únicamente entre aproximadamente ±85,05° de latitud. Los puntos fuera de esta banda no tienen celda QUADBIN, y el área de la celda se reduce hacia los polos — quadbinCellArea devuelve valores progresivamente menores a latitudes más altas para celdas de la misma resolución.
Mitigación: las cargas de trabajo cercanas a los polos deben recortar o rechazar las latitudes fuera de la banda web-mercator en el límite de ingesta; no confíe en las celdas QUADBIN para la cobertura polar.
Comportamiento en el antimeridiano. Las columnas de tesela se envuelven en el antimeridiano (±180° de longitud). Una trayectoria que cruza el antimeridiano se mueve entre celdas cuyas coordenadas de tesela x difieren en el ancho completo de la cuadrícula a ese zoom, aunque sean espacialmente adyacentes.
Mitigación: las cargas de trabajo que cruzan el antimeridiano deben validar celdas representativas contra la implementación de referencia de QUADBIN y añadir fixtures para los casos límite específicos que la carga de trabajo encuentre.
La representación en disco de tquadbin es idéntica byte a byte a la de tbigint (cada instante lleva un ID de celda QUADBIN de 64 bits más una marca de tiempo). Consecuencias para la planificación del almacenamiento:
WKT vía tquadbin_in y la función de salida temporal. Las celdas se representan como cadenas hexadecimales canónicas (por ejemplo, '480fffffffffffff'); se aceptan tanto decimal como hexadecimal en la entrada. El ciclo de ida y vuelta es estable a nivel de bits.
WKB / EWKB / HexWKB vía el patrón estándar de PostGIS de bandera de endianness seguida de la carga útil. Estable entre versiones mayores de PostgreSQL.
pg_dump usa WKT en modo plano y WKB bajo --binary-upgrade; ambos completan el ciclo de ida y vuelta limpiamente.
Conversión cruzada con tbigint: las conversiones bidireccionales tquadbin :: tbigint son reinterpretaciones bit a bit sin coste. Úselas cuando trabaje con vistas seguras por tipo (tquadbin) y aptas para aritmética (tbigint) de la misma trayectoria en una sola consulta.