@@ -38,6 +38,39 @@ VALUES (5, 0,
3838 <Metadata name="compression">laz</Metadata>
3939 </pc:metadata>
4040</pc:PointCloudSchema>'
41+ )
42+ ,(10, 0, -- All (signed) interpretations, uncompressed
43+ '<?xml version="1.0" encoding="UTF-8"?>
44+ <pc:PointCloudSchema xmlns:pc="http://pointcloud.org/schemas/PC/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
45+ <pc:dimension> <pc:position>1</pc:position> <pc:name>x</pc:name>
46+ <pc:size>1</pc:size> <pc:interpretation>int8_t</pc:interpretation>
47+ <pc:scale>0.01</pc:scale>
48+ </pc:dimension>
49+ <pc:dimension> <pc:position>2</pc:position> <pc:name>y</pc:name>
50+ <pc:size>2</pc:size> <pc:interpretation>int8_t</pc:interpretation>
51+ <pc:scale>0.01</pc:scale>
52+ </pc:dimension>
53+ <pc:dimension> <pc:position>3</pc:position> <pc:name>i2</pc:name>
54+ <pc:size>2</pc:size> <pc:interpretation>int16_t</pc:interpretation>
55+ <pc:scale>0.01</pc:scale>
56+ </pc:dimension>
57+ <pc:dimension> <pc:position>4</pc:position> <pc:name>i4</pc:name>
58+ <pc:size>4</pc:size> <pc:interpretation>int32_t</pc:interpretation>
59+ <pc:scale>0.01</pc:scale>
60+ </pc:dimension>
61+ <pc:dimension> <pc:position>5</pc:position> <pc:name>i8</pc:name>
62+ <pc:size>8</pc:size> <pc:interpretation>int64_t</pc:interpretation>
63+ <pc:scale>0.01</pc:scale>
64+ </pc:dimension>
65+ <pc:dimension> <pc:position>6</pc:position> <pc:name>f4</pc:name>
66+ <pc:size>4</pc:size> <pc:interpretation>float</pc:interpretation>
67+ <pc:scale>0.01</pc:scale>
68+ </pc:dimension>
69+ <pc:dimension> <pc:position>7</pc:position> <pc:name>f8</pc:name>
70+ <pc:size>8</pc:size> <pc:interpretation>double</pc:interpretation>
71+ <pc:scale>0.01</pc:scale>
72+ </pc:dimension>
73+ </pc:PointCloudSchema>'
4174);
4275CREATE TABLE IF NOT EXISTS pa_test_laz (
4376 id SERIAL,
@@ -373,4 +406,115 @@ SELECT pc_astext(PC_PointN(pa, 2)) FROM pa_test_laz;
373406 {"pcid":5,"pt":[2,1.9,0.34,10]}
374407(1 row)
375408
409+ WITH points AS (
410+ SELECT ARRAY[
411+ (2^08/256.0*v)*0.01, -- int8_t
412+ -(2^08/256.0*v)*0.01, -- int8_t
413+ (2^16/256.0*v)*0.01, -- int16_t
414+ (2^32/256.0*v)*0.01, -- int32_t
415+ (2^64/256.0*v)*0.01, -- int64_t
416+ (2^32/256.0*v)*0.01, -- float
417+ (2^64/256.0*v)*0.01 -- double
418+ ] a, v/16 v
419+ FROM generate_series(-127,127,4) v
420+ ), p1 AS (
421+ SELECT v, PC_Patch(PC_MakePoint(10, a)) p from points -- uncompressed
422+ GROUP BY v
423+ )
424+ SELECT 'compr' test,
425+ p1.v, compr, sc,
426+ PC_AsText(p1.p) =
427+ PC_AsText(PC_Compress(p1.p, compr,
428+ array_to_string(
429+ array_fill(sc,ARRAY[7]),
430+ ','
431+ )
432+ )) ok
433+ FROM p1, ( values
434+ ('dimensional','rle'),
435+ ('dimensional','zlib'),
436+ ('dimensional','sigbits'),
437+ ('dimensional','auto'),
438+ ('laz', 'null')
439+ ) dimcompr(compr,sc)
440+ ORDER BY compr,sc,v;
441+ test | v | compr | sc | ok
442+ -------+----+-------------+---------+----
443+ compr | -7 | dimensional | auto | t
444+ compr | -6 | dimensional | auto | t
445+ compr | -5 | dimensional | auto | t
446+ compr | -4 | dimensional | auto | t
447+ compr | -3 | dimensional | auto | t
448+ compr | -2 | dimensional | auto | t
449+ compr | -1 | dimensional | auto | t
450+ compr | 0 | dimensional | auto | t
451+ compr | 1 | dimensional | auto | t
452+ compr | 2 | dimensional | auto | t
453+ compr | 3 | dimensional | auto | t
454+ compr | 4 | dimensional | auto | t
455+ compr | 5 | dimensional | auto | t
456+ compr | 6 | dimensional | auto | t
457+ compr | 7 | dimensional | auto | t
458+ compr | -7 | dimensional | rle | t
459+ compr | -6 | dimensional | rle | t
460+ compr | -5 | dimensional | rle | t
461+ compr | -4 | dimensional | rle | t
462+ compr | -3 | dimensional | rle | t
463+ compr | -2 | dimensional | rle | t
464+ compr | -1 | dimensional | rle | t
465+ compr | 0 | dimensional | rle | t
466+ compr | 1 | dimensional | rle | t
467+ compr | 2 | dimensional | rle | t
468+ compr | 3 | dimensional | rle | t
469+ compr | 4 | dimensional | rle | t
470+ compr | 5 | dimensional | rle | t
471+ compr | 6 | dimensional | rle | t
472+ compr | 7 | dimensional | rle | t
473+ compr | -7 | dimensional | sigbits | t
474+ compr | -6 | dimensional | sigbits | t
475+ compr | -5 | dimensional | sigbits | t
476+ compr | -4 | dimensional | sigbits | t
477+ compr | -3 | dimensional | sigbits | t
478+ compr | -2 | dimensional | sigbits | t
479+ compr | -1 | dimensional | sigbits | t
480+ compr | 0 | dimensional | sigbits | t
481+ compr | 1 | dimensional | sigbits | t
482+ compr | 2 | dimensional | sigbits | t
483+ compr | 3 | dimensional | sigbits | t
484+ compr | 4 | dimensional | sigbits | t
485+ compr | 5 | dimensional | sigbits | t
486+ compr | 6 | dimensional | sigbits | t
487+ compr | 7 | dimensional | sigbits | t
488+ compr | -7 | dimensional | zlib | t
489+ compr | -6 | dimensional | zlib | t
490+ compr | -5 | dimensional | zlib | t
491+ compr | -4 | dimensional | zlib | t
492+ compr | -3 | dimensional | zlib | t
493+ compr | -2 | dimensional | zlib | t
494+ compr | -1 | dimensional | zlib | t
495+ compr | 0 | dimensional | zlib | t
496+ compr | 1 | dimensional | zlib | t
497+ compr | 2 | dimensional | zlib | t
498+ compr | 3 | dimensional | zlib | t
499+ compr | 4 | dimensional | zlib | t
500+ compr | 5 | dimensional | zlib | t
501+ compr | 6 | dimensional | zlib | t
502+ compr | 7 | dimensional | zlib | t
503+ compr | -7 | laz | null | t
504+ compr | -6 | laz | null | t
505+ compr | -5 | laz | null | t
506+ compr | -4 | laz | null | t
507+ compr | -3 | laz | null | t
508+ compr | -2 | laz | null | t
509+ compr | -1 | laz | null | t
510+ compr | 0 | laz | null | t
511+ compr | 1 | laz | null | t
512+ compr | 2 | laz | null | t
513+ compr | 3 | laz | null | t
514+ compr | 4 | laz | null | t
515+ compr | 5 | laz | null | t
516+ compr | 6 | laz | null | t
517+ compr | 7 | laz | null | t
518+ (75 rows)
519+
376520TRUNCATE pointcloud_formats;
0 commit comments