Requirements
============

QGIS
----
Python plugins
--------------
Set OTB environment
--------------------

export PYTHONPATH=/path/to/OTB/install/lib/otb/python/:$PYTHONPATH
# Environment variable for old OTB versions
export ITK_AUTOLOAD_PATH=/path/to/OTB/install/lib/otb/applications/
# Environment variable for new OTB versions
export OTB_APPLICATION_PATH=/path/to/OTB/install/lib/otb/applications/
# Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/path/to/OTB/install/lib/:$LD_LIBRARY_PATH

Set QGIS environment
---------------------
export QGIS_PREFIX_PATH=/path/to/QGIS/install
export PYTHONPATH=:/usr/share/qgis/python/plugins:~/.qgis2/python/plugins:$PYTHONPATH
# Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$QGIS_PREFIX_PATH/lib/:$LD_LIBRARY_PATH
# Add maintenance folder to python path
export PYTHONPATH=/path/to/QGIS/src/python/plugins/processing/algs/otb/maintenance:$PYTHONPATH

Check the white and black list for the current OTB version
----------------------------------------------------------
In the maintenance directory, the OTB applications are split in two files black_list.xml and white_list.xml.
These files are organized as follows :
For each OTB version, a new node version with id as attribute is added to the node data.
Each application is then added in the node app_name.
```xml
<?xml version="1.0"?>
<data>
    <version id="3.16">
        <app_name>BinaryMorphologicalOperation</app_name>
        <app_name>EdgeExtraction</app_name>
        <app_name>GrayScaleMorphologicalOperation</app_name>
        <app_name>DimensionalityReduction</app_name>
        <app_name>Pansharpening</app_name>
        <app_name>ExtractROI</app_name>
        <app_name>RigidTransformResample</app_name>
        <app_name>Segmentation</app_name>
        <app_name>KMeansClassification</app_name>
        <app_name>TrainSVMImagesClassifier</app_name>
        <app_name>ComputeConfusionMatrix</app_name>
        <app_name>OpticalCalibration</app_name>
        <app_name>SarRadiometricCalibration</app_name>
        <app_name>Smoothing</app_name>
    </version>
</data>
```
The list of available applications for each version is not fixed.

OTBSpecific_XMLcreation.py
--------------------------
Warning : Some of the applications needs to be split to be user-friendly. Here comes the file OTBSpecific_XMLcreation.py. 
Each function follows the pattern getNameOfTheOTBApplication().

Creating xml files
------------------
cd /path/to/QGIS/src/python/plugins/processing/algs/otb/maintenance
python ./OTBHelper.py