Representaciones compactas de datos LiDAR Miguel R. Luaces luaces@udc.es Laboratorio de Bases de Datos Universidade da Coruña 1
Motivación 2
Motivación La obtención y el acceso a nubes de puntos LiDAR está cada vez más generalizado Las aplicaciones basadas en nubes de puntos cada vez son mayores Las nubes de puntos son voluminosas: Ejemplo: PNOA LiDAR (0.5 puntos/m 2 ) Galicia: 9244 archivos, 161GB comprimidos Península Ibérica: 111389 archivos, 2.2TB comprimidos 3
Motivación Alternativas para el almacenamiento y consulta Formato LASzip Compresión de los datos (10% - 20% del fichero original) Permite acceso directo por índice a un punto de la nube Índice LASIndex Quadtree sobre las coordenadas x e y Entre el 0.1% y el 0.01% del fichero LAZ Problema: No tiene ningún tipo de soporte para la dimensión z ni para los valores escalares 4
Motivación Alternativas para el almacenamiento y consulta Estructuras de indexación multidimensional Octrees / R-Trees Permiten la creación de índices multidimensionales Problema: La maldición de la dimensionalidad El volumen a indexar aumenta exponencialmente mientras que la cantidad de información aumenta linealmente 5
Motivación Alternativas para almacenamiento y consulta Compresión con pérdida Descartar puntos o información de los puntos Generar versiones alternativas de la información para acelerar la visualización Problema: No mejoran los tiempos de consulta Soluciones Big Data Mejoran el rendimiento mediante la distribución del procesamiento Problema: Necesitan infraestructura 6
Motivación Suposiciones: Los datos son estáticos La funcionalidad de inserción y borrado no es necesaria El precio de la memoria RAM y SSD sigue bajando Una estructura compacta en memoria principal es mejor que una estructura dinámica en memoria secundaria El objetivo de la estructura es mejorar el tiempo de consulta Consultas de rango en cualquier dimensión espacial o escalar Consultas de vecinos más cercanos en cualquier dimensión 7
k 2 -tree 8
k 2 -tree Miguel R. Luaces luaces@udc.es Estructura de datos 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0011 0011 0010 0010 0001 0010 0100 0010 1000 0010 1010 T = 1110110110100100011010010101001010101100 L = 00110011001000100001001001000010100000101010 9
k 2 -tree Miguel R. Luaces luaces@udc.es Búsquedas 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0011 0011 0010 0010 0001 0010 0100 0010 1000 0010 1010 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 T = 1110110110100100011010010101001010101100 Children(p) = rank 1 (T,p) k 2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 L = 00110011001000100001001001000010100000101010 10
k 2 -tree con compresión de 1s k 2 -tree original comprime eficientemente regiones extensas de 0s (se usa un único 0) En un raster binario Las matrices pueden ser densas Los 1s y los 0s aparecen en clusters 11
k 2 -tree con compresión de 1s Objetivo: comprimir regiones de 1s La división de un nodo para cuando se llega a una región homogénea 1 1 0 ALL_ONES 1 0 0 0 1 0 0 1 1 1 1 1 1 1011 0011 0010 1111 1111 1111 1111 12
k 2 -tree con compresión de 1s Se utilizan dos bits para representar los nodos homogéneos que no sean hoja del árbol 1 1 00 ALL_ONES 01 00 0 00 0 000 1 000 00 0 1 1 1011 0011 0010 T = 1100 0001 0011 T = 01 000 00 L = 1011 0011 0010 13
k 2 -tree con compresión de 1s Evaluación: Comparamos nuestra estructura con quadtrees Estructuras: k 2 -tree con compresión de 1s Linear quadtree implementado por nosotros Conjuntos de datos: MDTs convertidos a binario usando un umbral de altura Conjunto de datos Dimensiones mdt600 3961 X 5881 mdt700 3841 X 5841 mdt800 3921 X 6001 14
k 2 -tree con compresión de 1s Resultados: Espacio (medido en bits por cada 1) Conjunto de datos K 2 -tree LQT mdt600 0.02 0.25 mdt700 0.02 0.17 mdt800 0.01 0.11 Tiempo de consulta (µs/query) Conjunto de datos K 2 -tree LQT mdt600 0.46 1.64 mdt700 0.50 1.64 mdt800 0.36 1.64 15
Representación de datos ráster 16
Representación de datos ráster Representación eficiente de cualquier ráster Permitir consultas de rango espacial o escalar Alternativas Usar tantos k 2 -tree como valores de la variable escalar. Dos variantes: Un k 2 -tree por cada valor de la variable: k 2 -base Un k 2 -tree acumulando los valores de la variable: k 2 -acc Definir un k 3 -tree y usar la variable escalar como dimensión adicional 17
Representación de datos ráster Alternativa k 2 -base 1 1 2 2 2 2 2 2 1 1 2 2 2 3 2 2 1 2 2 4 3 3 3 3 2 2 3 4 4 4 3 3 3 3 4 5 5 5 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 Value=1 Value=2 Value=3 Value=4 Value=5 18
Representación de datos ráster Alternativa k 2 -base Consultas: Consulta espacial pura: todos los k 2 -tree Consulta escalar variable = valor: un único k 2 -tree Consulta escalar variable en rango: varios k 2 -tree Consulta de rango espacial y escalar: varios k 2 -tree Value=1 Value=2 Value=3 Value=4 Value=5 19
Representación de datos ráster Alternativa k 2 -acc 1 1 2 2 2 2 2 2 1 1 2 2 2 3 2 2 1 2 2 4 3 3 3 3 2 2 3 4 4 4 3 3 3 3 4 5 5 5 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 Value 1 Value 2 Value 3 Value 4 Value 5 20
Representación de datos ráster Alternativa k 2 -acc Consultas: Consulta espacial pura: varios k 2 -tree Consulta escalar variable = valor: dos k 2 -tree Consulta escalar variable en rango: dos k 2 -tree Consulta de rango espacial y escalar: varios k 2 -tree K3: Value 3 K2: Value 2 Value = 3 _ = 21
Representación de datos ráster Alternativa k n -tree Generalización del k 2 -tree a n dimensiones Una matriz de n dimensiones se divide en k n submatrices Consultas permitidas: Recuperar el valor de una celda Recuperar todas las celdas de una fila Recuperar todas las celdas de una columna Recuperar todas las celdas de un plano Recuperar todas las celdas de una submatriz 22
Representación de datos ráster Ejemplo: k 3 -tree 1 1 1 1 1 1 1 1 23
Representación de datos ráster Ejemplo: k 3 -tree 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 24
Representación de datos ráster Evaluación Conjuntos de datos MDTs con alturas representadas en metros Conjunto Tamaño # valores mdt-500 4001 x 5841 578 mdt-700 3841 x 5841 472 mdt-medium 7721 x 11081 978 mdt-large 48266 x 47050 2142 25
Representación de datos ráster Evaluación Espacio de almacenamiento: Dataset lg (#values) H 0 K2-base K2-acc K3 Tiff-plain Tiff-comp mdt-500 9.17 5.43 2.83 2.30 1.83 16.01 1.52 mdt-700 8.88 4.39 2.13 2.40 1.38 16.01 1.12 mdt-medium 9.93 5.86 3.06 2.72 1.77 16.01 1.52 mdt-large 11.06 5.32 3.16 4.37 1.62 16.00 1.35 26
Representación de datos ráster Evaluación Obtener el valor de una celda (µs/consulta) La mejor opción es el k 3 -tree El k 2 -base es la peor opción y corresponde a una búsqueda secuencial Dataset K2-base K2-acc K3 Tiff-plain Tiff-comp mdt-500 66.7 4.6 2.2 2.6 491.7 mdt-700 39.6 3.0 1.8 2.7 461.9 mdt-medium 76.4 5.3 2.6 5.2 499.0 mdt-large 415.3 11.1 2.8 87.9 494.8 27
Representación de datos ráster Evaluación Obtener todas las celdas con un valor (µs/consulta) La mejor opción es el k 2 -base porque sólo busca en un k 2 - tree Los tiempos del k 3 -tree son competitivos Dataset K2-base K2-acc K3 Tiff-plain Tiff-comp mdt-500 3.9 5.8 9.4 39.5 221.4 mdt-700 3.0 6.0 7.3 37.5 199.5 mdt-medium 8.2 13.6 18.9 142.6 799.0 mdt-large 110.2 255.1 196.6 3838.9 19913.4 28
Representación de datos ráster Evaluación Obtener todas las celdas en un rango espacial y un rango de valores Dataset Spatial Range K2-base K2-acc K3 Tiff-plain Tiff-comp Mdtmedium Mdtlarge 10 50 10 50 10 6.4 2.4 2.0 45.7 531.4 50 28.4 2.5 2.5 45.9 533.6 10 9.9 3.7 4.2 229.2 705.4 50 46.5 4.7 10.9 228.5 705.4 10 10.5 3.9 2.2 285.5 519.1 50 44.2 3.9 2.5 287.4 545.8 10 13.1 4.6 3.2 1021.6 693.6 50 54.5 5.2 5.8 1009.6 691.9 29
Conclusiones 30
Conclusiones El k n -tree es una estructura compacta que permite la realización eficiente de consultas Ventajas: Por ser compacta, es ideal para memoria RAM o SSD Es eficiente en consultas con rangos amplios Inconvenientes: Es una estructura estática La calidad de la estructura depende de la distribución de los datos 31
Trabajo futuro En la actualidad Adaptándola para el almacenamiento de nubes de puntos LiDAR Evaluación: LASzip + LASindex Octree R-Tree En el futuro: Implementación de consultas de vecinos cercanos Prueba de otras estructuras 32
Representaciones compactas de datos LiDAR Miguel R. Luaces luaces@udc.es Laboratorio de Bases de Datos Universidade da Coruña 33