[pgpointcloud] stuck getting data into pgpointcloud

Adam Steer Adam.Steer at anu.edu.au
Tue Jul 19 17:52:56 PDT 2016


Hi all

I am attempting to ingest some points into postGIS-pointcloud, and basically failing at the start:

- I want to ingest time,x,y,z,intensity,return number and classification
- I’ve used pdal info —schema to get the numeric types, sizes and field names of my .LAS file (v1.4)
- I’ve (maybe) built a format schema based on those (see below)
- …and used a PDAL pipeline to try to ingest them.

but I’ve managed to map something badly - PDAL returns:

#> pdal pipeline postgis_pc_pipeline.xml 
PDAL: ERROR:  pc_patch_uncompressed_from_wkb: wkb size and expected data size do not match
LINE 1: INSERT INTO "blocks" ("pa") VALUES ('01020000000000000087130...

While I’ve worked with points a lot, I’ve not used any clever things like postGIS pointcloud to manage them (because PhD, time, and triage between working with what exists and learning new things) - and now I’m learning on the fly (with a need to learn fast!)

PDAL tells me I’m clearly missing something about the relationship between the size of things in my schema, and the size of things PDAL is getting from my .LAS file.

Also I’m trying to be lazy - I should probably work out the scales and offsets correctly, and store XYZ as long integers. I wanted to try floating point storage (as real, which if I read correctly should be big enough).

Any help will be highly appreciated!

Thanks

Adam

----
Here is my pipeline:

# cat postgis_pc_pipeline.xml

<?xml version="1.0" encoding="utf-8"?>
<Pipeline version="1.0">
    <Writer type="writers.pgpointcloud">
        <Option name="connection">host='localhost' dbname=‘….' user=‘….' password=‘….'</Option>
        <Option name="table">blocks</Option>
        <Option name="srid">28355</Option>
        <Option name="pcid">2</Option>
        <Filter type="filters.chipper">
            <Option name="capacity">5000</Option>
            <Reader type="readers.las">
                <Option name="filename">./subsets/ACT2015-C3-ELL_6926094_55_0002_0002_7_12.las</Option>
                <Option name="spatialreference">EPSG:28355</Option>
            </Reader>
        </Filter>
    </Writer>
</Pipeline>

(notes here - should I use a filter to get *just* the fields I want - or does PDAL handle extracting only what exists in the schema?)

…and my schema SQL:

INSERT INTO pointcloud_formats (pcid, srid, schema) VALUES (2, 28335, 
'<?xml version="1.0" encoding="UTF-8"?>
<pc:PointCloudSchema xmlns:pc="http://pointcloud.org/schemas/PC/1.1" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <pc:dimension>
    <pc:position>1</pc:position>
    <pc:size>8</pc:size>
    <pc:description>Time as seconds of GPS week, as real
    </pc:description>
    <pc:name>T</pc:name>
    <pc:interpretation>real</pc:interpretation>
    <pc:scale>1</pc:scale>
  </pc:dimension>
  <pc:dimension>
    <pc:position>2</pc:position>
    <pc:size>8</pc:size>
    <pc:description>X coordinate as real.</pc:description>
    <pc:name>X</pc:name>
    <pc:interpretation>real</pc:interpretation>
    <pc:scale>1</pc:scale>
  </pc:dimension>
  <pc:dimension>
    <pc:position>3</pc:position>
    <pc:size>8</pc:size>
    <pc:description>Y coordinate as real</pc:description>
    <pc:name>Y</pc:name>
    <pc:interpretation>real</pc:interpretation>
    <pc:scale>1</pc:scale>
  </pc:dimension>
  <pc:dimension>
    <pc:position>4</pc:position>
    <pc:size>8</pc:size>
    <pc:description>Z coordinate is ellipsoidal height as real
    </pc:description>
    <pc:name>Z</pc:name>
    <pc:interpretation>real</pc:interpretation>
    <pc:scale>1</pc:scale>
  </pc:dimension>
  <pc:dimension>
    <pc:position>5</pc:position>
    <pc:size>6</pc:size>
    <pc:description>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.</pc:description>
    <pc:name>Intensity</pc:name>
    <pc:interpretation>uint16_t</pc:interpretation>
    <pc:scale>1</pc:scale>
  </pc:dimension>
  <pc:dimension>
    <pc:position>6</pc:position>
    <pc:size>1</pc:size>
    <pc:description>Return number</pc:description>
    <pc:name>ReturnNumber</pc:name>
    <pc:interpretation>uint16_t</pc:interpretation>
    <pc:scale>1</pc:scale>
  </pc:dimension>
  <pc:dimension>
    <pc:position>7</pc:position>
    <pc:size>1</pc:size>
    <pc:description>Classification if supplied (ASPRS LAS guidelines)</pc:description>
    <pc:name>Class</pc:name>
    <pc:interpretation>uint16_t</pc:interpretation>
    <pc:scale>1</pc:scale>
  </pc:dimension>
  <pc:metadata>
    <Metadata name="compression">dimensional</Metadata>
  </pc:metadata>
</pc:PointCloudSchema>');






--


More information about the pgpointcloud mailing list