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

Set OTB environment
--------------------
```
export PYTHONPATH=/path/to/OTB/install/lib/otb/python/:$PYTHONPATH
# Environment variable for old OTB versions (< 5.2) 
export ITK_AUTOLOAD_PATH=/path/to/OTB/install/lib/otb/applications/
# Environment variable for new OTB versions (>= 5.2)
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=$QGIS_PREFIX_PATH/share/qgis/python:$QGIS_PREFIX_PATH/share/qgis/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
```
