.. BOS documentation master file, created by sphinx-quickstart on Sun Feb 12 17:11:03 2012. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. The BOS Plugin - Implementing the BOS Method for Line Quality Assessment ======================================================================== Contents: .. toctree:: :maxdepth: 2 Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` Assessing line quality using the BOS method =========================================== The BOS Plugin compares the geometries of two line layers (the input layer *X* and the reference layer *Q*) by buffering and overlay for several buffer sizes, collecting statistics and plotting the results for a visual assessment of the quality (geometric accuracy, bias, completeness and miscodings) of the input line data set with respect to the reference line data set according to the BOS method [Tveite1999]_. The Buffer-Overlay-Statistics (BOS) method ------------------------------------------ The Buffer-Overlay-Statistics (BOS) method works on line data sets and produces graphs that indicate spatial accuracy, bias, completeness and miscodings for a line data set of unknown quality with respect to a data set of better quality. The core of the method is buffering around the lines of the two data sets using a number of buffer sizes, and combining the resulting buffer data sets (*XB* and *QB*) and the two input line data sets (*X* and *Q*) in various ways to produce statistics that can be plotted to reveal the characteristics of the input line data set, *X*, with respect to the reference data set, *Q*. The basic elements of the BOS method are illustrated below. +--------------------------+-----------------------------+ | The elements of the BOS method | +==========================+=============================+ | Line data sets (X and Q) | Buffer (XB, QB) combination | +--------------------------+-----------------------------+ | |elements1| | |elements2| | +--------------------------+-----------------------------+ .. |elements1| image:: illustrations/explain1.png :height: 200 :align: middle .. |elements2| image:: illustrations/explain2.png :height: 200 :align: middle For each of the chosen buffer sizes, buffers are created and combined using an overlay operation to produce the polygon layer illustrated in the right part of the above illustration. Output ------ Four types of graphs are produced, and the type of graph to be shown is selected using the `Graph` combo box / menu. The following graphs are offered: - *Displacement* - Shows normalised (0%-100%) relative area sums for the polygons in the combined buffer data set, grouped according to the following combinations *Inside X and Inside Q*, *Inside X and Outside Q*, *Outside X and Inside Q*. |displacement| .. |displacement| image:: illustrations/displacement.png :align: middle - *Average displacement* - shows the average displacement as a function of buffer radius. Is expected to flatten out when the average displacement is equal to the spatial accuracy. |avgdisp| .. |avgdisp| image:: illustrations/averagedisplacement.png :align: middle - *Oscillations* - can indicate bias and spatial accuracy. If the graph is not steadily decreasing, it can be taken as an indication of bias. |oscillations| .. |oscillations| image:: illustrations/oscillations.png :align: middle - *Completeness / Miscodings* - shows completeness and miscodings (two graphs in the same plot) as a function of buffer radius. |completeness| .. |completeness| image:: illustrations/completeness.png :align: middle In addition a combination of all the graphs is offered with the "Combined" option. |combined| .. |combined| image:: illustrations/combined.png :align: middle Options ------- The behaviour of the BOS plugin is configured in the GUI: |bosgui| .. |bosgui| image:: illustrations/bos_gui.png :align: middle For input layers, you can choose if *Selected features only* are to be considered. In the *Options* area you will find the following: - The *Number of steps* (buffer sizes) - minimum 2 - The *Start radius* (for the buffers) - The *End radius* (for the buffers) - It is possible to choose a *Logarithmic* distribution of the buffer sizes. The default is to distribute them evenly between the *Start radius* and *End radius*. If you would like to have 10 buffers with a spacing of 100, you could specify 100 for the *Start radius*, 1000 for the *End radius* and 10 for the *Number of steps*, resulting in the following buffer sizes:: 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 With *Start radius* 1, *End radius* 1000, 10 buffers and *Logaritmic* the list will be:: 1, 2.15, 4.6, 10, 21.5, 46.4, 100, 215.4, 464.2, 1000 Depending on your datasets, it may be useful to start with a small radius, for instance a *Start radius* of 1 with an *End radius* of 1000. The steps will then not be at "nice" numbers, but the first data point will be close to the start of the x (buffer size) axis. The *Logaritmic* option is useful in combination with a small start radius, in order to get more details in what is normally the most "interesting" range. The plots in the figure below show the effect of the *Logarithmic* option (*Number of steps*: `10`; *Start radius*: `10` for linear and `1` for *Logarithmic*; *End radius*: `100`). +-------------------+-------------------+ | Linear | Logarithmic | +===================+===================+ | |linear_combined| | |log_combined| | +-------------------+-------------------+ .. |linear_combined| image:: illustrations/bos_combined_linear.png :height: 200 :align: middle .. |log_combined| image:: illustrations/bos_combined_logaritmic.png :height: 200 :align: middle Output options .............. When the algorithm has run, you can choose the type of graph (see descriptions above). Choices are: * *Displacement* * *Average displacement* * *Oscillations* * *Completeness* * *Combined* - all the four graphs listed above are combined into one plot Export ------ Export is supported for plots and data. Exporting plots as PDF and SVG ............................... Export of plots is supported with the buttons *Save plot as SVG* and *Save plot as PDF*. Options: - *Width (mm)* - The width of the output graphics in mm. Default: 150.0 mm - *Height (mm)* - The height of the output graphics in mm. Default: 100.0 mm Exporting the data as CSV ......................... The statistics data can be exported to CSV for further processing or tailored visualisation. The first (header) row contains identifiers / names for the columns. The exported CSV consists of nine columns, and as many rows as there are steps (plus the header row). The CSV-file looks like this (five steps in this example):: radius;IR;I;R;O;completeness;miscodings;average_displacement;oscillations 200.0;28500509.552210856;91345651.61111134;113376990.93457934;6068139105.312706;0.19671702510313907;0.7601548286200464;594.4025546563738;0.1974226191819506 400.0;106114289.65340048;134189530.21981135;173808986.21196535;5890899886.840816;0.3941682281114015;0.5284117923479394;908.9111184324876;0.11376896698620881 600.0;207985731.5163426;153389969.1893688;208527378.02795056;5740443047.301017;0.5479680819839098;0.3559997748555806;1087.6903083504928;0.06692292175659341 800.0;320066918.213234;162997040.60599986;231709138.4748819;5602226235.222582;0.6662973341813202;0.23494762857415086;1205.5310091551798;0.06023062958093407 1000.0;438372775.45679665;166790573.15283233;247128084.98095602;5472587533.011159;0.7345931607936302;0.17208001554203864;1282.9193606248948;0.04349989914178572 A CSVT file (with the same prefix as the CSV file, but a ``csvt`` suffix) specifying the data types of the columns is also created, with the following content:: "String", "Real", "Real", "Real", "Real", "Real", "Real", "Real", "Real", "Real", "Real" Warning ------- The method involves a lot of computation and will therefore take a very long time for data sets that are not extremely small. The running time will increase with the number of steps. Implementation -------------- The heavy work is performed in the background using a worker thread. Most of the computation is performed in the worker thread using QGIS processing algorithms (*Buffer*, *Union*, *Clip*, *Difference*, *Multipart to singleparts* and *Statistics by categories*). The main (left) progress bar is updated each time a main step (buffer size) has been completed, and the second (right) progress bar reports the progress of the individual processing algorithms (there are eight substeps for each buffer size). The current algorithm/substep is indicated in the area between the progress bars: "prep", "inpb (1/8)", "refb (2/8)", "clip (3/8)", "diff (4/8)", "union1 (5/8)", "union2 (6/8)", "tosingle (7/8)" and "stat (8/8)". Versions -------- The current version is 1.1.0. - 1.1.0 - Set the minimum number of steps to 2 (#1) - 1.0.1 - Eliminated the superfluous "BOS" submenu under the Vector menu - Documentation update - Code cleaning (PEP 8) - 1.0: First official version. Citation -------- Would you like to cite / reference this plugin? Tveite, H. (2020). The QGIS BOS Plugin. . Bibtex: .. code-block:: latex @misc{tveitebos, author = {HÃ¥vard Tveite}, title = {The {QGIS} {BOS} Plugin}, howpublished = {\url{http://plugins.qgis.org/plugins/BOS/}}, year = {2020} } .. rubric:: References .. [Tveite1999] Tveite, H. and Langaas S., 1999. An accuracy assessment method for geographical line data sets based on buffering. *International Journal of Geographical Information Science*, 13, pp. 27-47.