<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Hello,</p>
    <p>First let me say that PDAL rocks. I love it.<br>
    </p>
    <p>I was wondering if there's a way to specify (cast) the data type
      of the X,Y,Z dimensions while reading a PLY file (so in effect
      override the type specified in the PLY header) in the PDAL
      pipeline.</p>
    <p>I have an input PLY file (untransformed.ply) that has the header:</p>
    <p>ply<br>
      format ascii 1.0<br>
      [ .... ]<br>
      property float x<br>
      property float y<br>
      property float z<br>
      [ .... ]</p>
    <p>And coordinate points with ~5 digits of precision.</p>
    <p>1.13759 12.1322 162.786 <br>
      [ .... ]<br>
    </p>
    <p>When I try to apply the following transform (add a east/north
      offset):<br>
    </p>
    <p>{<br>
        "pipeline": [<br>
          "untransformed.ply",<br>
          {<br>
            "matrix": "1 0 0 576705 0 1 0 5188170 0 0 1 0 0 0 0 1",<br>
            "type": "filters.transformation"<br>
          },<br>
          {<br>
            "a_srs": "EPSG:32615",<br>
            "filename": "transformed.las",<br>
            "offset_x": "576705",<br>
            "offset_y": "5188170",<br>
            "offset_z": "0"<br>
          }<br>
        ]<br>
      }<br>
    </p>
    <p>There's a loss of precision (I get a "grid-like" output, see
      <a class="moz-txt-link-freetext"
href="https://cloud.githubusercontent.com/assets/1951843/25507885/9cd01d12-2b7c-11e7-9c54-0e219dae4f05.png">https://cloud.githubusercontent.com/assets/1951843/25507885/9cd01d12-2b7c-11e7-9c54-0e219dae4f05.png</a>).
      I think it's because the matrix transformation code here
      <a class="moz-txt-link-freetext"
href="https://github.com/PDAL/PDAL/blob/dd97a033c5d487000e200304a7619e9978de6ae2/filters/TransformationFilter.cpp#L106">https://github.com/PDAL/PDAL/blob/dd97a033c5d487000e200304a7619e9978de6ae2/filters/TransformationFilter.cpp#L106</a>
      <u>correctly</u> treats points as floats.<br>
    </p>
    <p>Changing the PLY header to:</p>
    <p>ply<br>
      format ascii 1.0<br>
      [ .... ]<br>
      property double x<br>
      property double y<br>
      property double z<br>
      [ .... ]</p>
    Produces the expected output (no grid-like output).<br>
    <p>I was wondering if I could force the dimensions to be treated as
      a double directly from PDAL? Or perhaps is there interest in
      adding a flag (cast to dimension) in PDAL's PLY reader (I'd be
      happy to contribute to it)?<br>
    </p>
    More information about the background of this issue is also
    available here: <a class="moz-txt-link-freetext"
      href="https://github.com/OpenDroneMap/OpenDroneMap/issues/522">https://github.com/OpenDroneMap/OpenDroneMap/issues/522</a><br>
    <br>
    Thank you for any information you might have!<br>
    <br>
    -Piero<br>
    <br>
  </body>
</html>