INSERT INTO pointcloud_formats (pcid, srid, schema) VALUES (5, 0, ' 1 4 X coordinate as a long integer. You must use the scale and offset information of the header to determine the double value. X int32_t 0.01 2 4 Y coordinate as a long integer. You must use the scale and offset information of the header to determine the double value. Y int32_t 0.01 3 4 Z coordinate as a long integer. You must use the scale and offset information of the header to determine the double value. Z int32_t 0.01 4 2 The intensity value is the integer representation of the pulse return magnitude. This value is optional and system specific. However, it should always be included if available. Intensity uint16_t 1 laz ' ) ,(10, 0, -- All (signed) interpretations, uncompressed ' 1 x 1 int8_t 0.01 2 y 2 int8_t 0.01 3 i2 2 int16_t 0.01 4 i4 4 int32_t 0.01 5 i8 8 int64_t 0.01 6 f4 4 float 0.01 7 f8 8 double 0.01 ' ); CREATE TABLE IF NOT EXISTS pa_test_laz ( id SERIAL, pa PCPATCH(5) ); \d pa_test_laz INSERT INTO pa_test_laz (pa) VALUES ('0000000005000000000000000200000002000000030000000500060000000200000003000000050008'); INSERT INTO pa_test_laz (pa) VALUES ('000000000500000000000000020000000600000007000000050006000000090000000A00000005000A'); INSERT INTO pa_test_laz (pa) VALUES ('0000000005000000000000000200000002000000030000000500060000000200000003000000050003'); INSERT INTO pa_test_laz (pa) VALUES ('0000000005000000000000000200000002000000030000000500060000000200000003000000050001'); SELECT pc_explode(pa) FROM pa_test_laz; SELECT pc_astext(pc_explode(pa)) FROM pa_test_laz; SELECT * FROM pa_test_laz; SELECT Sum(PC_NumPoints(pa)) FROM pa_test_laz; SELECT Sum(PC_MemSize(pa)) FROM pa_test_laz; SELECT Sum(PC_PatchMax(pa,'x')) FROM pa_test_laz; SELECT Sum(PC_PatchMin(pa,'x')) FROM pa_test_laz; SELECT PC_Uncompress(pa) FROM pa_test_laz WHERE id=1; DELETE FROM pa_test_laz; INSERT INTO pa_test_laz (pa) SELECT PC_Patch(PC_MakePoint(5, ARRAY[x,y,z,intensity])) FROM ( SELECT -127+a/100.0 AS x, 45+a/100.0 AS y, 1.0*a AS z, a/10 AS intensity, a/400 AS gid FROM generate_series(1,1600) AS a ) AS values GROUP BY gid; SELECT pc_explode(pa) FROM pa_test_laz LIMIT 20; SELECT pc_astext(pc_explode(pa)) FROM pa_test_laz LIMIT 20; SELECT * FROM pa_test_laz LIMIT 20; SELECT Sum(PC_NumPoints(pa)) FROM pa_test_laz; SELECT Sum(PC_MemSize(pa)) FROM pa_test_laz; SELECT Max(PC_PatchMax(pa,'x')) FROM pa_test_laz; SELECT Min(PC_PatchMin(pa,'x')) FROM pa_test_laz; SELECT Min(PC_PatchMin(pa,'z')) FROM pa_test_laz; SELECT pc_astext(PC_FilterLessThan(pa, 'z', 5)) FROM pa_test_laz; SELECT pc_astext(PC_FilterGreaterThan(pa, 'z', 1595)) FROM pa_test_laz; SELECT pc_astext(PC_FilterEquals(pa, 'z', 500)) FROM pa_test_laz; SELECT pc_astext(PC_FilterBetween(pa, 'z', 500, 505)) FROM pa_test_laz; DELETE FROM pa_test_laz; INSERT INTO pa_test_laz( pa ) VALUES ('01050000000200000004000000210000000000000000000000000000000a004417593a34c1c5f74f83179fc2448960000000'); SELECT pc_explode(pa) FROM pa_test_laz; SELECT pc_astext(pc_explode(pa)) FROM pa_test_laz; INSERT INTO pointcloud_formats (pcid, srid, schema) VALUES (6, 0, ' 1 4 X coordinate as a long integer. You must use the scale and offset information of the header to determine the double value. X int64_t 0.01 2 4 Y coordinate as a long integer. You must use the scale and offset information of the header to determine the double value. Y double 0.01 3 4 Z coordinate as a long integer. You must use the scale and offset information of the header to determine the double value. Z float 0.01 4 2 The intensity value is the integer representation of the pulse return magnitude. This value is optional and system specific. However, it should always be included if available. Intensity uint64_t 1 laz ' ); CREATE TABLE IF NOT EXISTS pa_test_laz_multiple_dim ( pa PCPATCH(6) ); \d pa_test_laz_multiple_dim INSERT INTO pa_test_laz_multiple_dim (pa) SELECT PC_Patch(PC_MakePoint(6, ARRAY[x,y,z,intensity])) FROM ( SELECT a*2 AS x, a*1.9 AS y, a*0.34 AS z, 10 AS intensity, a/400 AS gid FROM generate_series(1,1600) AS a ) AS values GROUP BY gid; SELECT pc_astext(pc_explode(pa)) FROM pa_test_laz_multiple_dim LIMIT 20; SELECT pc_astext(PC_PointN(pa, 2)) FROM pa_test_laz; WITH points AS ( SELECT ARRAY[ (2^08/256.0*v)*0.01, -- int8_t -(2^08/256.0*v)*0.01, -- int8_t (2^16/256.0*v)*0.01, -- int16_t (2^32/256.0*v)*0.01, -- int32_t (2^64/256.0*v)*0.01, -- int64_t (2^32/256.0*v)*0.01, -- float (2^64/256.0*v)*0.01 -- double ] a, v/16 v FROM generate_series(-127,127,4) v ), p1 AS ( SELECT v, PC_Patch(PC_MakePoint(10, a)) p from points -- uncompressed GROUP BY v ) SELECT 'compr' test, p1.v, compr, sc, PC_AsText(p1.p) = PC_AsText(PC_Compress(p1.p, compr, array_to_string( array_fill(sc,ARRAY[7]), ',' ) )) ok FROM p1, ( values ('dimensional','rle'), ('dimensional','zlib'), ('dimensional','sigbits'), ('dimensional','auto'), ('laz', 'null') ) dimcompr(compr,sc) ORDER BY compr,sc,v; TRUNCATE pointcloud_formats;