[Liblas-commits] hg-main-tree: added docs
liblas-commits at liblas.org
liblas-commits at liblas.org
Wed Jul 27 20:28:04 EDT 2011
details: http://hg.libpc.orghg-main-tree/rev/f2fb65bf789c
changeset: 959:f2fb65bf789c
user: Michael P. Gerlek <mpg at flaxen.com>
date: Wed Jul 27 17:28:00 2011 -0700
description:
added docs
diffstat:
doc/notes/pipeline_xml.txt | 218 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 218 insertions(+), 0 deletions(-)
diffs (222 lines):
diff -r 3f0d06373ce2 -r f2fb65bf789c doc/notes/pipeline_xml.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/notes/pipeline_xml.txt Wed Jul 27 17:28:00 2011 -0700
@@ -0,0 +1,218 @@
+.. _pipeline_xml:
+
+============
+Pipeline XML
+============
+
+This note describes the XML structure used for describing pipelines.
+
+The pipeline XML syntax mirrors very closely the Stage class hierarchy
+and construction format used by the C++ API.
+
+There are two kinds of pipelines that can be expressed: "writer pipelines"
+have Writer stages as their endpoint, and "reader pipelines" have general
+Stage stages (Reader/Filter/Multifilter) as their endpoint.
+
+We have two use cases specifically in mind:
+
+ * a command-line app that reads an XML file to allow a user to easily
+ construct arbitrary writer pipelines, as opposed to having to build apps
+ custom to individual needs with arbitary options, filters, etc
+
+ * within the Python environment, the user can provide XML for a reader
+ pipeline, construct it via a simple call to the PipelineManager API,
+ and then use native Python to perform the read and do any processing
+ of the emitted points
+
+
+Examples
+========
+
+A writer pipeline::
+
+ <?xml version="1.0" encoding="utf-8"?>
+ <Pipeline>
+ <Writer>
+ <Type>drivers.las.writer</Type>
+ <Option>
+ <Name>filename</Name>
+ <Value>out.las</Value>
+ <Description>junk junk junk</Description>
+ </Option>
+ <Filter>
+ <Type>filters.crop</Type>
+ <Option>
+ <Name>bounds</Name>
+ <Value>([0,1000000],[0,1000000],[0,1000000])</Value>
+ </Option>
+ <Reader>
+ <Type>drivers.las.reader</Type>
+ <Option>
+ <Name>filename</Name>
+ <Value>../../test/data/1.2-with-color.las</Value>
+ </Option>
+ </Reader>
+ </Filter>
+ </Writer>
+ </Pipeline>
+
+A reader pipeline::
+
+ <?xml version="1.0"?>
+ <Pipeline>
+ <Filter>
+ <Type>filters.crop</Type>
+ <Option>
+ <Name>bounds</Name>
+ <Value>([0,1000000],[0,1000000],[0,1000000])</Value>
+ </Option>
+ <Reader>
+ <Type>drivers.las.reader</Type>
+ <Option>
+ <Name>filename</Name>
+ <Value>../../test/data/1.2-with-color.las</Value>
+ </Option>
+ </Reader>
+ </Filter>
+ </Pipeline>
+
+
+Syntax Specification
+====================
+
+* <Pipeline>
+
+ * this is the root element for all pipeline xml
+
+ * mandatory
+
+ * child elements:
+
+ * exactly one of the following four:
+
+ * <Writer> element, for writer pipelines
+
+ * <Reader> or <Filter> or <MultiFilter> element, for reader pipelines
+
+* <Writer>
+
+ * indicates a writer stage
+
+ * child elements:
+
+ * exactly one <Type> element
+
+ * zero or more <Option> elements
+
+ * exactly one <Reader> or <Filter> or <MultiFilter> element
+
+* <Reader>
+
+ * indicates a reader stage
+
+ * child elements:
+
+ * exactly one <Type> element
+
+ * zero or more <Option> elements
+
+* <Filter>
+
+ * indicates a filter stage
+
+ * child elements:
+
+ * exactly one <Type> element
+
+ * zero or more <Option> elements
+
+ * exactly one <Reader> or <Filter> or <MultiFilter> element
+
+* <MultiFilter>
+
+ * indicates a multifilter stage (filter than takes >1 input stage)
+
+ * child elements:
+
+ * exactly one <Type> element
+
+ * zero or more <Option> elements
+
+ * one or more <Reader> or <Filter> or <MultiFilter> elements
+
+* <Option>
+
+ * indicates an option parameter to the pipeline stage
+
+ * may only be a child of a <Reader>, <Writer>, <Filter>, or <MultiFilter> element
+
+ * child elements
+
+ * exactly one <Name> element
+
+ * exactly one <Value> element
+
+ * zero or one <Description> element
+
+ * <Name>
+
+ * indicates the text name of an option
+
+ * may only be a child of an <Option>
+
+ * no child elements
+
+ * body text: the name of the option, e.g. "filename" or "bounds"
+
+* <Value>
+
+ * indicates the (textual) value of an option
+
+ * may only be a child of an <Option>
+
+ * no child elements
+
+ * body text: the text representaion of the option value, e.g. "input.las" or "42"
+
+* <Description>
+
+ * indicates the description field of an option (currently ignored)
+
+ * may only be a child of an <Option>
+
+ * no child elements
+
+ * body text: the text representaion of the option description
+
+ * <Type>
+
+ * indicates the type of the stage
+
+ * may only be a child of a <Reader>, <Writer>, <Filter>, or <MultiFilter> element
+
+ * no child elements
+
+ * body text: the text name of the stage, e.g. "drivers.las.reader" or "filters.crop"
+
+
+
+Notes
+=====
+
+* In the implementation, ptrees are used to read and write the pipelines.
+ This means less parsing hassle for us, but also means we can't produce
+ decent error messages (esp. since we don't have line numbers).
+
+* Attributes are not used anywhere. This is in part because ptree's dont
+ support them uniformly across all file formats.
+
+* The schema is intended to be something that can be validated via XSD,
+ although we dont do that today.
+
+* No version numbering yet, need to add that. Would like to be an attr on
+ the <Pipeline> element.
+
+* We might want to change <Pipeline> to <ReaderPipeline> and
+ <WriterPipeline>, to simplify the implementation and API, as well as
+ improve error checking.
+
More information about the Liblas-commits
mailing list