[pdal] How to invoke my custom writer?

Paul Schrum paul.schrum at gmail.com
Tue Jul 11 07:59:49 PDT 2017


Thank you Andrew.

In the cpp file containing the class, I have the following lines:

  static PluginInfo const s_info = PluginInfo(
    "writers.PdalVectorMapWriter",
    "Custom Writer to write a GRASS Vector Map",
    "http://no/documentation/yet" );

  CREATE_SHARED_PLUGIN(1, 0, PdalVectorMapWriter, Writer, s_info);

So would the only other thing I need to do be to tell pdal where to find
the class?  I don't have to instantiate the class and pass it the instance?

The class lives in my GRASS executable, v.in.pdal.  How do I tell pdal to
append PDAL_DRIVER_PATH with v.in.pdal's path, and is that sufficient?

I see in https://github.com/PDAL/PDAL/tree/master/plugins that these are
built using CMake.  But GRASS uses make, so I don't know how to make these
work together.  Is it not possible for me simply to pass an instance of my
class to some kind of pdal->registerPlugIn() function or something similar
which happens at runtime?

- Paul


On Mon, Jul 10, 2017 at 7:56 PM, Andrew Bell <andrew.bell.ia at gmail.com>
wrote:

> You need to build your writer as a shared plugin and make sure that the
> dll/so that you create is in a folder where the plugin manager will look
> for it (or set PDAL_DRIVER_PATH).  Take a look at one of the existing
> plugins in the "plutgins" subdirectory of pdal.  Let me know if you need
> more help.
>
> On Mon, Jul 10, 2017 at 5:11 PM, Paul Schrum <paul.schrum at gmail.com>
> wrote:
>
>> I am developing a custom PDAL writer for my GSoC project. (Link
>> <https://trac.osgeo.org/grass/wiki/GSoC/2017/IntegrationOfPDALintoGRASSGIS>)
>> Source Code is on github <https://github.com/PaulSchrum/v_in_pdal>.  The
>> module compiles, but it is an intermediate state since I am in the process
>> of developing it.
>>
>> I have the custom writer, PdalVectorMapWriter,  inheriting from writer
>> and it compiles okay.  Currently all functions just print out their own
>> name and return.
>>
>> In main.cpp I create the pipeline json string and create a
>> PipelineExecutor with it.  I then call pipeline-> validate.  This throws an
>> exception stating
>>
>> terminate called after throwing an instance of 'pdal::pdal_error'
>>   what():  Couldn't create writer stage of type
>> 'writers.PdalVectorMapWriter'.
>>
>> So I am thinking that I need somehow to inform Pdal about an instance of
>> the class.  But as I go over the Pdal documentation, I do not see how to do
>> that.  Can someone help me understand what I need to do?
>>
>> - Paul
>>
>> Here is a key code snippet:
>> 81    std::string pipeline_json =
>> 82            pipelineJson::basicVectorMapReaderWriter(inFile,outFile);
>> 83
>> 84    cout << pipeline_json << endl;  //diagnostic only
>> 85    cout << endl;
>> 86    G_important_message(_("Running the pipeline ..."));
>> 87    auto pipeline = new pdal::PipelineExecutor(pipeline_json);
>> 88
>> 87    cout << "is valid?  " << pipeline->validate() << endl;
>>
>> Line 87 throws the exception.
>>
>>
>> Here is the json string being passed to the PipelineExecutor constructor:
>>
>> { "pipeline":[
>>    "/home/user/Desktop/ALL/SourceModules/cpp/grass7_trunk/
>> vector/v.in.pdal/testFiles/100-points.las",
>> {
>>    "type":"writers.PdalVectorMapWriter",
>>    "filename":"100-points"
>> }
>>  ]
>> }
>>
>>
>>
>>
>> _______________________________________________
>> pdal mailing list
>> pdal at lists.osgeo.org
>> https://lists.osgeo.org/mailman/listinfo/pdal
>>
>
>
>
> --
> Andrew Bell
> andrew.bell.ia at gmail.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pdal/attachments/20170711/aba8cfa6/attachment.html>


More information about the pdal mailing list